2017-08-30 6 views
1

IDを共有できる複数の行を持つpandasデータフレームがあります。各行には、「ラベル」列の値もあります。私が望むのは、同じIDを共有するすべてのラベルを結合することです。1列の値を共有する行を取り、pandasデータフレームの別の列の値を結合します

例えば、言うこれは私が持っているものです。私が望む何

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

可能な重複(https://stackoverflow.com/questions/22219004/grouping-rows-in-list-in-pandas-groupby) – cmaher

答えて

1

あなたはこのソリューションはVaishaliのの溶液への@非常に似ている

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

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

を必要とするが、それは.apply()メソッドの代わりに.agg()を使用しています:[パンダのGROUPBYでリスト内の行をグループ化する]の

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] 
関連する問題