合并两个具有不同长度和重复值的数据帧

时间:2017-05-01 16:57:23

标签: python pandas

我有两个数据帧,我想要合并相同的col'A'。但是,在df2中,col A被随机复制一次。这种复制对我的问题很重要,我不能放弃它。我希望最终的数据帧看起来像df3。 Col A将Col B值合并到每个复制的位置。

df1                       df2
Col A   Col B             Col A    Col B
1       v                 1        a
2       w                 2        b    
3       x                 2        c
4       y                 3        d
                          3        e
                          4        f

df3
Col A    Col B    Col C
1        a        v
2        b        w
2        c        w
3        d        x
3        e        x
4        f        y

2 个答案:

答案 0 :(得分:1)

使用合并:

df2.merge(df1, on='Col A')
Out: 
   Col A Col B_x Col B_y
0      1       a       v
1      2       b       w
2      2       c       w
3      3       d       x
4      3       e       x
5      4       f       y

如有必要,请事后重命名:

df = df2.merge(df1, on='Col A')
df.columns = ['Col A', 'Col B', 'Col C']

有关详细信息,请参阅merging and joining上的Pandas文档。

答案 1 :(得分:0)

我认为您需要在map创建的Series之前set_index

print (df1.set_index('Col A')['Col B'])
Col A
1    v
2    w
3    x
4    y
Name: Col B, dtype: object

df2['Col C'] = df2['Col A'].map(df1.set_index('Col A')['Col B'])
print (df2)
   Col A Col B Col C
0      1     a     v
1      2     b     w
2      2     c     w
3      3     d     x
4      3     e     x
5      4     f     y