[英]Pandas merge to list by column
有沒有辦法合並兩個 Pandas 數據框,以便相同的列名最終作為合並的 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)
函數,但用於合並數據幀。
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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.