如何合并来自两个不同DataFrame的相同列

时间:2019-06-19 03:13:01

标签: pandas

我有两个数据框A和B。它们都有相同的4列。我想合并两个数据帧,以便如果前三个列值匹配,然后合并id值(这是一个jasonb数组)

样本数据:

df_A

name     age    zip      id
abc      25     11111    ["2722", "2855", "3583"]

df_B

name     age    zip      id
abc      25     11111    ["123", "234"]

我希望最终输出看起来像

最终输出:

name     age    zip      id
----------------------------------------------------------------
abc      25     11111    ["2722", "2855", "3583", "123", "234"]

2 个答案:

答案 0 :(得分:1)

一个快速解决方案是

l=['name','age','zip']
df=(df1.set_index(l)+df2.set_index(l)).reset_index()

答案 1 :(得分:1)

另一个选择是merge,然后使用列表推导来处理“ id”列。

output = df_A.merge(df_B, on=['name', 'age', 'zip'])
output['id'] = [[*x, *y] for x, y in zip(output.pop('id_x'), output.pop('id_y'))] 

output
  name  age    zip                            id
0  abc   25  11111  [2722, 2855, 3583, 123, 234]