我有两个数据框A和B。它们都有相同的4列。我想合并两个数据帧,以便如果前三个列值匹配,然后合并id值(这是一个jasonb数组)
name age zip id
abc 25 11111 ["2722", "2855", "3583"]
name age zip id
abc 25 11111 ["123", "234"]
我希望最终输出看起来像
name age zip id
----------------------------------------------------------------
abc 25 11111 ["2722", "2855", "3583", "123", "234"]
答案 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]