您好,我知道之前已经回答过这个问题,但我在这些解决方案中得到的结果很奇怪。因此,希望能解释一下我的方法有什么问题。
我有 2 个 csv 文件
f1
A,B,C
1,2,3
1,2,3
3,3,3
f2
C,D,F
3,3,1
1,1,1
我正在尝试合并它们。 简单
f = pd.merge(left=f1, right=f2, how='outer', on='C')
但是合并结果不是给出预期的表
A,B,C,D,F
1,2,3,3,1
1,2,3,3,1
3,3,3,3,1
我得到的结果是:
A,B,C,D,F
1,2,3
1,2,3
3,3,3
,,3,3,1
,,1,1,1
不知道为什么我会收到这个。
我不是在处理这些确切的数据。我从 csv 文件中读取这些数据作为
pd.read_csv('filename.csv', usecols=[colnames])
编辑:
这是我的代码:
import pandas as pd
f2 = pd.read_csv('filename1.csv', usecols=[colnames])
f1 = pd.read_csv('filename2.csv', usecols=[colnames])
f = pd.merge(left=f1, right=f2, how='left', on='MergeCol')
最佳答案
这是您的解决方案。你想做一个左连接而不是外部连接:
import pandas as pd
f1 = pd.DataFrame({'A':[1,1,3], 'B':[2,2,3], 'C':[3,3,3]})
f2 = pd.DataFrame({'C':[3,1], 'D':[3,1], 'F':[1,1]})
f = f1.merge(f2, how='left', on='C')
输出:
A B C D F
0 1 2 3 3 1
1 1 2 3 3 1
2 3 3 3 3 1
如果您想写回 csv,只需执行以下操作:
f.to_csv('yourfile.csv', index=False)
关于python - Pandas 基于列合并 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42583664/