Pandas 如何合并来自两个不同数据帧的相同列

Pandas 如何合并来自两个不同数据帧的相同列,pandas,Pandas,我有两个数据帧A和B。它们都有相同的4列。我想合并两个数据帧,这样如果前三列值匹配,那么合并id值(这是一个jasonb数组) 样本数据: 德福阿 德福 我希望最终输出看起来像 最终输出: 一个快速的解决方案是 l=['name','age','zip'] df=(df1.set_index(l)+df2.set_index(l)).reset_index() 另一个选项是合并,然后使用列表理解来处理“id”列 output = df_A.merge(df_B, on=['name', 'ag

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

样本数据: 德福阿 德福 我希望最终输出看起来像

最终输出:
一个快速的解决方案是

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

另一个选项是
合并
,然后使用列表理解来处理“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]
name     age    zip      id
----------------------------------------------------------------
abc      25     11111    ["2722", "2855", "3583", "123", "234"]
l=['name','age','zip']
df=(df1.set_index(l)+df2.set_index(l)).reset_index()
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]