是否可以合并两个熊猫数据框,以使相同的列名最终成为合并的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)
函数,但用于合并数据帧。
答案 0 :(得分:1)
IIUC我们可以用groupby
做axis=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]