我需要数据帧,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不同于乙在DF1和乙在DF2
所以我的问题只是一般性的:当Pandas将_x附加到合并数据框中的列名时,它意味着什么?
谢谢
EdC*_*ica 15
对于未在合并操作中涉及的列名称中的任何碰撞添加后缀,请参阅在线文档.
因此,在您的情况下,如果您认为它们是相同的,您可以在两列上进行合并:
pd.merge(df1, df2, on=['A', 'B'])
Run Code Online (Sandbox Code Playgroud)
这样做只会返回两个数据帧中存在A和B存在的值,因为默认的合并类型是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