3 回答

TA贡献1818条经验 获得超11个赞
尝试reset_index()
:
df=df.groupby(['A_Num','I_Num'])["ID"].apply(lambda tags: ';'.join(tags.values)).reset_index()
这样,您的聚合 fromapply()
将被执行,然后重新分配为column
而不是index
.

TA贡献1877条经验 获得超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 包含列表。如果您更想要字符串,只需执行以下操作:
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条经验 获得超4个赞
Groupby 'A_Num' 和 'I_Num' 然后合并同一组中的 ID。
df.groupby(['A_Num','I_Num']).ID.apply(lambda x: ';'.join(x.tolist())).reset_index()
添加回答
举报