使用 pandas 组合两个 csv 文件
Posted
技术标签:
【中文标题】使用 pandas 组合两个 csv 文件【英文标题】:Combining two csv files using pandas 【发布时间】:2018-02-14 14:52:04 【问题描述】:谁能帮我检查一下我的代码有什么问题。 我希望它将两个 csv 文件合并为一个 csv 文件。
我已经尝试 google,但我仍然无法合并它,它会创建新文件但不会显示任何内容。 https://***.com/a/16266144/7624469
a.csv
ID User
A1 Fi
A2 Ki
b.csv
ID User
A4 Fsdi
A5 Kisd
我想要的输出是这样的
combined.csv
ID User
A1 Fi
A2 Ki
A4 Fsdi
A5 Kisd
test.py
import pandas, sys
import pandas as pd
a = pd.read_csv("C:/JIRA Excel File/a.csv")
b = pd.read_csv("C:/JIRA Excel File/b.csv")
merged = a.merge(b, on='ID')
merged.to_csv('C:/JIRA Excel File/result.csv', index=False)
【问题讨论】:
【参考方案1】:这里最好使用pd.concat
来组合这些帧,而不是merge
:
merged = pd.concat([a,b])
您的数据的玩具示例:
a = pd.DataFrame([['Fi'],['Ki']],columns=['User'], index=['A1','A2'],) #'ID')
b = pd.DataFrame([['Fi'],['Ki']],columns=['User'], index=['A4','A5'],) #'ID')
pd.concat([a,b])
将输出:
User
A1 Fi
A2 Ki
A4 Fi
A5 Ki
【讨论】:
会显示这个错误 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 53: invalid start byte unicode 错误与您的原始问题无关。将正确的编码指定为read_csv。 接受的答案中建议的concat
与append
之间的实际区别是什么?【参考方案2】:
使用df.append
:
out = df1.append(df2)
print(out)
ID User
0 A1 Fi
1 A2 Ki
0 A4 Fsdi
1 A5 Kisd
with open('C:/JIRA Excel File/result.csv', 'w', encoding='utf-8') as f:
out.to_csv(f, index=False)
【讨论】:
以上是关于使用 pandas 组合两个 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何通过在 Python 中将两个列表合并为一个,使用 CSV 模块或 Pandas 写入 csv 或 Excel 文件?