【问题标题】:Duplicate columns with Pandas merge?与 Pandas 合并的重复列?
【发布时间】:2017-03-13 14:06:59
【问题描述】:

我有一个数据框a:

ID    value1
1     nan
2     nan
3     nan
4     nan
5     nan

然后是另外两个数据帧,bc

ID     value1
2      20
3      10

ID     value1
1      58
4      20

当我执行a.merge(b, on='ID').merge(c, on='ID') 时,我得到value 的重复列。我的最终结果有以下列:

ID     value1_x    value1_y    value1

但我想最终得到:

ID    value1
1     58
2     20
3     10
4     20
5     nan

如何使用bc 填充a 中的值而不重复列?

【问题讨论】:

    标签: python pandas merge duplicates


    【解决方案1】:

    您可以在a 中使用concat,然后使用mergedrop 旧列value1

    df1 = pd.concat([b,c])
    print (df1)
       ID  value1
    0   2      20
    1   3      10
    0   1      58
    1   4      20
    
    df2 = pd.merge(a ,df1, on='ID', how='left', suffixes=('_',''))
    df2.drop('value1_', axis=1, inplace=True)
    print (df2)
       ID  value1
    0   1    58.0
    1   2    20.0
    2   3    10.0
    3   4    20.0
    4   5     NaN
    

    【讨论】:

    • 我要更新 OP,但假设 a 的 ID 为 5-10,这也是 value1 中的 nans - 我想将它们保留为 nans。
    • 请查看更新,解决方案非常相似 - 仅添加 suffixes 用于将 _ 添加到第一列并将空字符串添加到第二列。
    • 如果我想做同样的事情,但由于数据集中有大量列而删除了许多重复列怎么办?
    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 2019-03-25
    • 2022-07-27
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2017-03-27
    相关资源
    最近更新 更多