我有一个熊猫数据框,如下所示。对于每个ID,我可以有多个名称和子ID。
Id NAME SUB_ID
276956 A 5933
276956 B 5934
276956 C 5935
287266 D 1589
我想压缩数据框,以便每个id只有一行,并且每个id下的所有名称和sub_ids在该行上都显示为单数形式
Id NAME SUB_ID
276956 set(A,B,C) set(5933,5934,5935)
287266 set(D) set(1589)
我尝试对ID进行分组,然后汇总所有其他列
df.groupby('Id').agg(lambda x: set(x))
但是这样做时,结果数据框没有Id列。当您执行groupby时,id将作为元组的第一个值返回,但是我想您聚合时会丢失。有没有一种方法来获取我要寻找的数据框。那就是分组和聚集而不丢失被分组的列。
如果您不希望groupby作为索引,可以使用一个参数来避免进一步重置:
df.groupby('Id', as_index=False).agg(lambda x: set(x))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句