熊猫合并以按列列出

时间:2020-02-15 19:53:32

标签: python pandas dataframe merge

是否可以合并两个熊猫数据框,以使相同的列名最终成为合并的df中的列表项?
例如:

import pandas as pd
df_1 = pd.DataFrame({'A' : [1,2,3], 'B' : [4,5,6], 'C' : [7,8,9]})
df_2 = pd.DataFrame({'A' : [1,2,3], 'B' : ['a','b','c'], 'C' : ['d','e','f']})

df_merged = df_1.merge(df_2, on='A') # This should be changed, I guess

导致:

   A  B_x  C_x B_y C_y
0  1    4    7   a   d
1  2    5    8   b   e
2  3    6    9   c   f

我希望得到:

   A  B       C
0  1  [4, a]  [7, d]
1  2  [5, b]  [8, e]
2  3  [6, c]  [9, f]

因此它类似于groupby.apply(list)函数,但用于合并数据帧。

1 个答案:

答案 0 :(得分:1)

IIUC我们可以用groupbyaxis=1

s=df_1.merge(df_2, on='A').set_index('A')
s=s.groupby(s.columns.str.split('_').str[0],axis=1).agg(lambda x : x.tolist()).reset_index()
s
   A       B       C
0  1  [4, a]  [7, d]
1  2  [5, b]  [8, e]
2  3  [6, c]  [9, f]