Pandas 在具有重复项的列上合并两个dataframe

Pandas 在具有重复项的列上合并两个dataframe,pandas,dataframe,Pandas,Dataframe,我有两个数据帧,看起来像: col1 col2 1 a 1 b 2 c 及 如何合并它们(在col1上)以获得以下内容 col1 col2 col3 1 a d 1 b e 2 c Nan 3 Nan f 我尝试了pd.merge,但没有得到想要的结果。您可以执行以下操作: df1['key'] = df1.groupby('col1').cumcount() df2[

我有两个数据帧,看起来像:

col1   col2   
1      a
1      b
2      c

如何合并它们(在col1上)以获得以下内容

col1   col2   col3
1      a      d
1      b      e
2      c      Nan
3      Nan    f
我尝试了pd.merge,但没有得到想要的结果。

您可以执行以下操作:

df1['key'] = df1.groupby('col1').cumcount()
df2['key'] = df2.groupby('col1').cumcount()

res = df1.merge(df2, on=['col1', 'key'], how='outer').drop('key', 1)
print(res)
输出

   col1 col2 col3
0     1    a    d
1     1    b    e
2     2    c  NaN
3     3  NaN    f
groupby('col1').cumcount()的思想是为重复的元素创建一个唯一的键。

您可以执行以下操作:

df1['key'] = df1.groupby('col1').cumcount()
df2['key'] = df2.groupby('col1').cumcount()

res = df1.merge(df2, on=['col1', 'key'], how='outer').drop('key', 1)
print(res)
输出

   col1 col2 col3
0     1    a    d
1     1    b    e
2     2    c  NaN
3     3  NaN    f

groupby('col1').cumcount()的思想是为重复的元素创建一个唯一的键。

非常好的解决方案!非常感谢。非常好的解决方案!非常感谢。