我目前有一个数据帧和一个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列。
答案 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)