我有一个熊猫数据框架,如下所示。对于每个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和aggregate。
发布于 2016-09-12 10:23:13
如果您不想将groupby作为索引,可以使用参数来避免进一步的重置:
df.groupby('Id', as_index=False).agg(lambda x: set(x))https://stackoverflow.com/questions/39441484
复制相似问题