Pandas/Python如何合并两个包含重复行的数据框?

6

好的,这似乎应该可以用合并或连接操作轻松完成,但我无法解决它。我正在使用pandas。

我有两个包含重复行的数据框,并且我想将它们以这样的方式进行组合,即不会出现重复的行或列。它可以按以下方式工作:

df1:

A B 
a 1
b 2
c 3

df2:

A B 
b 2
c 3
d 4

df3 = df1 combined with df2

A B 
a 1
b 2
c 3
d 4

我尝试过一些方法,比如选择在一个表中而不在另一个表中的行(即异或),然后将它们附加上去,但我无法想出如何进行选择。另一个想法是将它们附加起来,然后删除重复的行,但我不知道如何做后者。

2个回答

6
您想要一个外部合并(outer merge):outer merge
In [103]:
df1.merge(df2, how='outer')

Out[103]:
   A  B
0  a  1
1  b  2
2  c  3
3  d  4

以上代码会自动查找两个数据框之间的共同列,并指定合并类型,从而得到一个包含所需组合列的数据框。


如果您有一些重复的行和一些不重复的行,并且基于索引,您想要保留df1中的实例并在df2中删除重复的索引,那该怎么办呢?(这应该是一个新问题吗) - Adam
如果您想进行合并,使得 df2 中的值覆盖 df1 中相同的值,该怎么办? - PirateApp

2
您可以使用以下方法删除重复项:
pd.concat([df1, df2]).drop_duplicates() 

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