用来自另一个数据帧的数据替换数据帧中的数据

时间:2016-06-22 18:25:14

标签: python python-2.7 csv pandas dataframe

我目前有一个数据帧和一个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

我也可以将“得分”列更换为ZIP列。

1 个答案:

答案 0 :(得分:0)

您是否尝试将csv加载到列表中,然后循环遍历列表中的项目。

In [11]: del df2["r"]

In [12]: df2.merge(df1[["r", "node"]])
Out[12]:
   node  original       lat        lon    r
0     0     50405  1.299033  103.83828   95
1     1     50404  1.299033  103.83828  140
2     2     50405  1.299033  103.83828  143
3     3     50402  1.299033  103.83828  259
4     4      6101  1.299033  103.83828   85
5     5      9821  1.332867  103.95767   37

您也可以尝试从pandas 合并

更新:使用合并

以下是使用合并的示例:

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

结果:

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)