Python比较CSV密钥

2024-03-29 11:43:55 发布

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

我正在使用Python Pandas尝试将CSV2中的引用与CSV1中的数据进行匹配,并创建一个新的输出文件。你知道吗

CSV1

reference,name,house
234 8A,john,37
564 68R,bill,3
RT4 VV8,kate,88
76AA,harry ,433

CSV2

reference
234 8A
RT4 VV8

代码

 import pandas as pd
    df1 = pd.read_csv(r'd:\temp\data1.csv')
    df2 = pd.read_csv(r'd:\temp\data2.csv')
    df3 = pd.merge(df1,df2, on= 'reference', how='inner')
    df3.to_csv('outpt.csv')

当我运行它的时候,我得到了一个keyerror作为参考,是不是数据中的空格导致了这个问题?数据以逗号分隔。你知道吗


Tags: 文件csv数据pandasreadtemppddf1
1条回答
网友
1楼 · 发布于 2024-03-29 11:43:55

很可能在读取CSV文件后,reference列中有前导空格或尾随空格。你知道吗

您可以这样检查:

print(df1.columns.tolist())
print(df2.columns.tolist())

您可以通过向pd.read_csv()调用添加sep=r'\s*,\s*'参数来“修复”它

示例:

In [74]: df1
Out[74]:
  reference    name  house
0    234 8A    john     37
1   564 68R    bill      3
2   RT4 VV8    kate     88
3      76AA  harry     433

In [75]: df2
Out[75]:
  reference
0     234 8A
1    RT4 VV8

In [76]: df2.columns.tolist()
Out[76]: ['reference ']

In [77]: df1.columns.tolist()
Out[77]: ['reference', 'name', 'house']

In [78]: df1.merge(df2, on='reference')

...

KeyError: 'reference'

固定df2

data = """\
reference 
234 8A
RT4 VV8"""
df2 = pd.read_csv(io.StringIO(data), sep=r'\s*,\s*')

现在起作用了:

In [80]: df1.merge(df2, on='reference')
Out[80]:
  reference  name  house
0    234 8A  john     37
1   RT4 VV8  kate     88

相关问题 更多 >