gpt4 book ai didi

Python Pandas 比较 CSV keyerror

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:43 26 4
gpt4 key购买 nike

我正在使用 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')

当我运行它时,我收到一个关键错误供引用,是否是数据中的空格导致了问题?数据以逗号分隔。

最佳答案

读取 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

关于Python Pandas 比较 CSV keyerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36809265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com