我有一个pandas数据框,其中有多行可以共享ID。每行还有一个"标签"的值。柱。我想要的是组合所有共享相同ID的标签。
例如,说这就是我所拥有的:
id | label
-----------
1 a
1 b
2 a
2 c
2 d
3 e
我想要的是这样的:
id | label_list
----------------
1 [a,b]
2 [a,c,d]
3 [e]
因此,将共享相同ID的标签合并为一个列表。最有效的方法是什么?
答案 0 :(得分:1)
你需要
df.groupby('id').label.apply(list).reset_index()
id label
1 [a, b]
2 [a, c, d]
3 [e]
答案 1 :(得分:0)
此解决方案与@ Vaishali的解决方案非常相似,但它使用.agg()
代替.apply()
方法:
In [110]: df.groupby('id', as_index=False)['label'].agg(lambda x: x.tolist())
Out[110]:
id label
0 1 [a, b]
1 2 [a, c, d]
2 3 [e]