在Python Pandas中合并数据框时避免重复行。

3

我想使用两个数据框的相似列'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' 的一个值,我不希望在合并的 dataframe 中重复该值。相反,我希望得到以下输出:

>>> 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
@flyingmeatball,我其实不关心B列和C列之间的关系。我只想在A列等于'I'且C列还没有值的情况下,在第一行插入4。 - Martijn
1个回答

8
让我们通过 cumcount 创建一个新变量 g。
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

1
谢谢,那完成了工作! - Martijn
@Martijn Yw~ :-) - BENY
1
@Bharath 我从 piR 那里学到的,他还加快了速度 :-) .....https://dev59.com/opzha4cB1Zd3GeqPFXNK - BENY
@Bharath,抱歉!我错过了那个话题。 - Martijn
@Bharath 是的,他是 :-) - BENY
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接