将数据帧中的数据替换为另一个数据帧中的数据

2024-04-26 21:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在有一个数据帧和一个csv文件。你知道吗

在csv文件中,我有大约30列,包括一列邮政编码(例如,“10001”、“08983”、“85321”)。CSV是3400行x 30列。你知道吗

在数据框中,我有一列邮政编码和一列匹配的分数:

zipcode  score
99780    2.250000
99801    2.719083
99824    2.721311
99827    2.285714
99835    2.534783
99901    2.501558
[27688 rows x 1 columns]

我想转到我的csv文件,查看每个邮政编码,将邮政编码与数据框匹配,并添加一个新的列来记录存储在数据框中的分数。我也可以直接用数据框中的分数替换csv文件中的邮政编码,如果这样更快的话。你知道吗

之所以.replace不起作用,是因为我不想手动输入所有27688个邮政编码,然后说应该用什么来替换它们。你知道吗

有什么想法吗?你知道吗

编辑:以下是CSV文件中当前行的外观:

Name     Age     DOB     Gender     Hair Color     Eye Color     ZIP
John Doe 22      6-10    Male       Brn            Brn           99780

我希望它看起来像这样:

Name     Age     DOB     Gender     Hair Color     Eye Color     ZIP     Score
John Doe 22      6-10    Male       Brn            Brn           99780   2.250000

我也同意将“Score”列直接替换为ZIP列。你知道吗


Tags: 文件csv数据nameagezipgender分数
1条回答
网友
1楼 · 发布于 2024-04-26 21:14:43

您是否尝试过将csv加载到列表中,然后在列表中的项目之间循环。你知道吗

import csv
sFile = "myfile.csv"
with open(sFile, 'rb') as f:
    reader = csv.reader(f)
    yourList = list(reader)

for item in yourList:
    #search and replace based on each item

您也可以尝试从pandas中合并。你知道吗

更新:使用合并

下面是使用合并的示例:

import pandas as pd

df = pd.DataFrame([[12345,"Atlanta"],[54321,"Orlando"]], columns=['Zip','City'])

df2 = pd.read_csv('Zip.csv')

df3 = pd.merge(df,df2,how="left", )

print (df3)

结果是:

     Zip     City     State
0  12345  Atlanda   Georgia
1  54321  Orlando   Florida

相关问题 更多 >