2017-08-30 78 views
1

我有一個可以共享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合併並製作成標籤一個列表。什麼是最有效的方式來做到這一點?

+1

[在大熊貓GROUPBY分組排在列表]的可能的複製(https://stackoverflow.com/questions/22219004/grouping-rows-in-list-in-pandas-groupby) – cmaher

回答

1

你需要

df.groupby('id').label.apply(list).reset_index() 

id  label 
1  [a, b] 
2 [a, c, d] 
3   [e] 
0

該解決方案非常相似,@費沙的解決方案,但它使用.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] 
相關問題