与 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
然后是另外两个数据帧,b
和 c
:
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
如何使用b
和c
填充a
中的值而不重复列?
【问题讨论】:
【参考方案1】:您可以在a
中使用concat
,然后使用merge
和drop
旧列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中的多个列合并多个重复行