我有一個如下的資料框(但要大得多):
import pandas as pd
panda_list = [pd.DataFrame({'sent_a.1': [0, 3, 2, 1], 'sent_a.2': [0, 1, 4, 0], 'sent_a.3': [0, 6, 0, 8],'sent_a.4': [1, 1, 8, 6],'ID':['id_1_2','id_1_3','id_1_4','id_1_4']}),
pd.DataFrame({'sent_a.1': [0, 3], 'sent_a.2': [0, 2], 'sent_a.3': [0, 6],'sent_a.4': [1, 1],'ID':['id_2_1','id_2_2']}),
pd.DataFrame({'sent_a.1': [0, 3, 2, 1], 'sent_a.2': [0, 1, 4, 0], 'sent_a.3': [0, 6, 0, 8], 'sent_a.4': [1, 1, 8, 6], 'ID': ['id_1_2', 'id_1_3', 'id_1_4', 'id_1_4']}),
]
我想將相似列上的熊貓組合成一個資料框,所以輸出看起來像這樣,
desired output:
print(new_df)
sent_a.1 sent_a.2 sent_a.3 sent_a.4 ID
0 0,0,0 0,0,0 0,0,0 1,1,1 id_1_2,id_2_1,id_3_1
1 3,3,3 1,2,1 6,6,6 1,1,1 id_1_3,id_2_2,id_3_2
2 2,NaN,2 4,NaN,4 0,NaN,0 8,NaN,8 id_1_4,NaN,id_3_3
3 1,NaN,1 0,NaN,0 8,NaN,8 6,NaN,6 id_1_4,NaN,id_3_4
所以我嘗試了以下例如第一列,但由于大小不一樣,它會發送一個錯誤,
new_df=pd.DataFrame()
new_df['sent_a.1']=panda_list[0]['sent_a.1'] ',' panda_list[1]['sent_a.1'] ',' panda_list[2]['sent_a.1']
筆記:
我不想連接或合并這些列,我想將它們組合起來。請查看所需的輸出。
uj5u.com熱心網友回復:
IIUC,您可以concat匯總(假設此處為串列)。
丟棄 NaN:
out = pd.concat(panda_list).groupby(level=0).agg(list)
輸出:
sent_a.1 sent_a.2 sent_a.3 sent_a.4 ID
0 [0, 0, 0] [0, 0, 0] [0, 0, 0] [1, 1, 1] [id_1_2, id_2_1, id_1_2]
1 [3, 3, 3] [1, 2, 1] [6, 6, 6] [1, 1, 1] [id_1_3, id_2_2, id_1_3]
2 [2, 2] [4, 4] [0, 0] [8, 8] [id_1_4, id_1_4]
3 [1, 1] [0, 0] [8, 8] [6, 6] [id_1_4, id_1_4]
要聚合為字串,請確保先轉換為字串:
out = pd.concat(panda_list).astype(str).groupby(level=0).agg(','.join)
輸出:
sent_a.1 sent_a.2 sent_a.3 sent_a.4 ID
0 0,0,0 0,0,0 0,0,0 1,1,1 id_1_2,id_2_1,id_1_2
1 3,3,3 1,2,1 6,6,6 1,1,1 id_1_3,id_2_2,id_1_3
2 2,2 4,4 0,0 8,8 id_1_4,id_1_4
3 1,1 0,0 8,8 6,6 id_1_4,id_1_4
確保不丟失 NaN
在另一個軸上連接并執行雙重轉置
out = (
pd.concat(panda_list, axis=1).astype(str)
.T.groupby(level=0, sort=False)
.agg(','.join).T
)
輸出:
sent_a.1 sent_a.2 sent_a.3 sent_a.4 ID
0 0,0.0,0 0,0.0,0 0,0.0,0 1,1.0,1 id_1_2,id_2_1,id_1_2
1 3,3.0,3 1,2.0,1 6,6.0,6 1,1.0,1 id_1_3,id_2_2,id_1_3
2 2,nan,2 4,nan,4 0,nan,0 8,nan,8 id_1_4,nan,id_1_4
3 1,nan,1 0,nan,0 8,nan,8 6,nan,6 id_1_4,nan,id_1_4
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425812.html
