获取在一列中共享值的行,并组合pandas数据帧中另一列的值

时间:2017-08-30 18:15:02

标签: python-3.x pandas

我有一个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的标签合并为一个列表。最有效的方法是什么?

2 个答案:

答案 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]