熊猫' merge返回一个附加了_x的列

时间:2014-04-21 12:33:49

标签: python pandas

我必须使用数据框, df1 A,B,C,D ... df2 A ,B,E,F ......

我要合并的键位于 A 列中。 B 在两个数据帧中也(很可能)相同。虽然这是一个大数据集,但我正在进行清洁,所以我对所有内容都没有非常好的概述。

我做

merge(df1, df2, on='A')

结果包含一个名为B_x的列。由于数据集很大且很乱,我还没有尝试调查B_x与 df1 B B 的区别> DF2

所以我的问题只是一般性的:当Pandas将_x附加到合并数据框中的列名时,它意味着什么?

谢谢

1 个答案:

答案 0 :(得分:15)

为列名中与合并操作无关的任何碰撞添加后缀,请参阅online docs

所以在你的情况下,如果你认为它们是相同的,你可以在两个列上进行合并:

pd.merge(df1, df2, on=['A', 'B'])

这样做只会返回两个数据框中都存在AB的值,因为默认的合并类型是inner合并。

所以你可以做的是将这个合并的df大小与你的第一个大小进行比较,看看它们是否相同,如果是,你可以在两个列上进行合并,或者只是删除/重命名_x / {{ 1}}后缀_y列。

我会花时间确定这些值是否确实相同且存在于两个数据帧中,在这种情况下,您可能希望执行B合并:

outer

然后你可以做的就是删除重复的行(可能还有任何pd.merge(df1, df2, on=['A', 'B'], how='outer') 行),这应该会给你一个干净的合并数据帧。

NaN

查看drop_duplicates

的在线文档