使用 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。 接受的答案中建议的concatappend 之间的实际区别是什么?【参考方案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组合两个文件?

如何通过在 Python 中将两个列表合并为一个,使用 CSV 模块或 Pandas 写入 csv 或 Excel 文件?

附加两个csv文件时如何修复pandas concat

根据 Pandas 中的列内容连接两个 csv 文件

将两个 csv 文件与 python pandas 进行比较

如何连接两个csv文件然后按python排序