Pandas的合并返回一个列,其中_x附加到名称

luf*_*ffe 16 python pandas

我需要数据帧,df1有列A,B,C,D ......df2有列A,B,E,F ...

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

我做

merge(df1, df2, on='A')
Run Code Online (Sandbox Code Playgroud)

结果包含一个名为B_x的列.由于数据集是大而凌乱我没有试图研究如何B_X不同于DF1DF2

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

谢谢

EdC*_*ica 15

对于未在合并操作中涉及的列名称中的任何碰撞添加后缀,请参阅在线文档.

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

pd.merge(df1, df2, on=['A', 'B'])
Run Code Online (Sandbox Code Playgroud)

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

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

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

pd.merge(df1, df2, on=['A', 'B'], how='outer')
Run Code Online (Sandbox Code Playgroud)

那么你可以做的就是删除重复的行(可能还有任何NaN行),这应该会给你一个干净的合并数据帧.

merged_df.drop_duplicates(cols=['A', 'B'],inplace=True)
Run Code Online (Sandbox Code Playgroud)

查看在线文档 drop_duplicates