Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按列合并到列表_Python_Pandas_Dataframe_Merge - Fatal编程技术网

Python 按列合并到列表

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

有没有一种方法可以合并两个数据帧,使相同的列名最终成为合并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.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]