【问题标题】:Pandas' merge returns a column with _x appended to the namePandas 的合并返回一个名称附加 _x 的列
【发布时间】:2014-04-21 12:33:48
【问题描述】:

我必须数据框,df1 有列 A、B、C、D...df2 有列 A , B, E, F...

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

我愿意

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

结果包含一个名为 B_x 的列。由于数据集又大又乱,我没有尝试研究 B_x 与 df1 中的 Bdf2 中的 B 有何不同

所以我的问题是笼统的:当 Pandas 将 _x 附加到合并数据帧中的列名时是什么意思?

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    为合并操作中不涉及的列名中的任何冲突添加后缀,请参阅online docs

    因此,如果您认为它们相同,则可以在两列上进行合并:

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

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

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

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

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

    然后你可以做的是删除重复的行(可能还有任何NaN 行),这应该会给你一个干净的合并数据框。

    merged_df.drop_duplicates(cols=['A', 'B'],inplace=True)
    

    查看drop_duplicates的在线文档

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2017-08-29
      • 2018-06-14
      • 2023-04-04
      • 2020-10-25
      • 2018-10-30
      • 2017-02-21
      • 1970-01-01
      • 2014-01-11
      相关资源
      最近更新 更多