【问题标题】:Merge dataframes without duplicating rows in python pandas [duplicate]合并数据框而不在python pandas中复制行[重复]
【发布时间】:2018-05-06 11:01:41
【问题描述】:

我想使用它们相似的列“A”组合两个数据框:

>>> df1
    A   B
0   I   1
1   I   2
2   II  3

>>> df2
    A   C
0   I   4
1   II  5
2   III 6

为此,我尝试使用:

merged = pd.merge(df1, df2, on='A', how='outer')

返回:

>>> merged
    A   B   C
0   I   1.0 4
1   I   2.0 4
2   II  3.0 5
3   III NaN 6

但是,由于 df2 只包含一个 A == 'I' 的值,我不希望该值在合并的数据帧中重复。相反,我想要以下输出:

>>> merged
    A   B   C
0   I   1.0 4
1   I   2.0 NaN
2   II  3.0 5
3   III NaN 6

最好的方法是什么?我是 python 新手,仍然对所有的 join/merge/concatenate/append 操作有些困惑。

【问题讨论】:

  • 你想让它知道C中的4值属于B中的1吗?
  • @flyingmeatball,我其实并不关心 B 列和 C 列之间的关系。我只想将 4 插入 A == 'I' 的第一行,其中 C 列还没有值.

标签: python pandas dataframe merge


【解决方案1】:

让我们创建一个新变量 g,cumcount

df1['g']=df1.groupby('A').cumcount()
df2['g']=df2.groupby('A').cumcount()
df1.merge(df2,how='outer').drop('g',1)
Out[62]: 
     A    B    C
0    I  1.0  4.0
1    I  2.0  NaN
2   II  3.0  5.0
3  III  NaN  6.0

【讨论】:

  • 谢谢你,完成了这项工作!
  • @Martijn Yw~ :-)
  • @Bharath aha:-)
  • @Bharath 我从 piR 那里学到的,他也加快了速度:-) .....stackoverflow.com/questions/40575486/…
  • @Bharath,对不起!我错过了那个话题。
猜你喜欢
  • 2020-04-10
  • 2012-02-08
  • 2017-12-16
  • 2018-11-01
  • 2017-01-06
  • 1970-01-01
  • 2021-12-04
  • 2014-07-24
  • 2022-01-27
相关资源
最近更新 更多