Python 3.x 获取在一列中共享值的行,并在dataframe中合并来自另一列的值
我有一个多行的熊猫数据框,可以共享一个ID。每行也有一个“标签”列的值。我想要的是合并共享相同ID的所有标签 例如,假设这是我所拥有的:Python 3.x 获取在一列中共享值的行,并在dataframe中合并来自另一列的值,python-3.x,pandas,Python 3.x,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的标签被合并成一个列表。最有效的
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的标签被合并成一个列表。最有效的方法是什么?您需要
df.groupby('id').label.apply(list).reset_index()
id label
1 [a, b]
2 [a, c, d]
3 [e]
此解决方案与@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]
可能重复的