与 Pandas 合并的重复列?

Posted

技术标签:

【中文标题】与 Pandas 合并的重复列?【英文标题】:Duplicate columns with Pandas merge? 【发布时间】: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 中的值而不重复列?

【问题讨论】:

【参考方案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 用于将 _ 添加到第一列并将空字符串添加到第二列。 如果我想做同样的事情,但由于数据集中有大量列而删除了许多重复列怎么办?

以上是关于与 Pandas 合并的重复列?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 使用 dfA 列合并 == dfB 索引 [重复]

使用 3 列合并 Pandas 中的 2 个数据框 [重复]

基于Pandas.Dataframe中的多个列合并多个重复行

如何在不重复列的情况下合并 Pandas 数据框

Python / Pandas合并并从逗号分隔的变量/列生成唯一值列表[重复]

合并 Pandas 数据框中的 2 列,用前一个值填充 NaN [重复]