Python 按列合并到列表
有没有一种方法可以合并两个数据帧,使相同的列名最终成为合并df中的列表项? 例如:Python 按列合并到列表,python,pandas,dataframe,merge,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') # Th
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.applylist函数,但用于合并数据帧。IIUC我们可以使用axis=1执行groupby
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]