3 回答

TA貢獻1818條經(jīng)驗 獲得超11個贊
嘗試reset_index()
:
df=df.groupby(['A_Num','I_Num'])["ID"].apply(lambda tags: ';'.join(tags.values)).reset_index()
這樣,您的聚合 fromapply()
將被執(zhí)行,然后重新分配為column
而不是index
.

TA貢獻1877條經(jīng)驗 獲得超6個贊
另一種方法是:
result= df.groupby(['A_Num', 'I_Num']).agg({'ID': list})
result.reset_index(inplace=True)
result[['ID', 'A_Num', 'I_Num']]
輸出是:
Out[37]:
ID A_Num I_Num
0 [001 ] A_001 I_001
1 [002 , 005 ] A_002 I_002
2 [003 ] A_003 I_004
在這種情況下,ID 包含列表。如果您更想要字符串,只需執(zhí)行以下操作:
result['ID']= result['ID'].map(lambda lst: ';'.join(lst))
result[['ID', 'A_Num', 'I_Num']]
哪個輸出:
Out[48]:
ID A_Num I_Num
0 001 A_001 I_001
1 002;005 A_002 I_002
2 003 A_003 I_004

TA貢獻1884條經(jīng)驗 獲得超4個贊
Groupby 'A_Num' 和 'I_Num' 然后合并同一組中的 ID。
df.groupby(['A_Num','I_Num']).ID.apply(lambda x: ';'.join(x.tolist())).reset_index()
添加回答
舉報