2017-02-03 13 views
1

にのみ選択された列の値を結合する効率的な方法私は、単一の行にそれを平らにするように、私はIDによってグループをしたいようなパンダ:グループ化されたデータフレーム

LAST_MOD_DATE  ID TITLE   TXT_ID    TXT 
0 1486047205463  2 TITLE-2  7     ABC 
1 1486047205463  2 TITLE-2  5     XYZ 
2 1486047205463  2 TITLE-2  6     MNQ 

ことDFを有しています。異なる値のTXT_IDTXTのフィールドは、コンマ区切りの値で1つに結合されます。だから、以下のような何か:

ID 
2 1486047205463  TITLE-2  7, 5, 6   ABC, XYZ, MNQ 

私はちょうど

df.groupby('ID')['TXT'].apply(lambda x:', '.join(x)) 

によって単一の列を取得することができていますしかし、単にながら、私は選択いくつかの列に参加できるように全体のDFにそれを行う方法同じグループ内の他の列の上位値を選択します。今は、値を集合として集計し、次にいくつかの列に対して集合を拡張することでそれをやっています。しかし、これは非常に効率的ではないようです。

答えて

0

aggを使用して、各列に適用する機能を指定します。ここで私は、あなたが 'TITLE'の最初の要素を取り上げる方法を説明するために再び 'ID'だけをグループ化する混合の例を挙げますが、サンプルに対してグループ化することができます(普通の場合ではないかもしれません):

df.groupby('ID').agg({'TITLE':'first', 
         'TXT_ID':lambda x:', '.join(x), 
         'TXT':lambda x:', '.join(x)}) 
Out[288]: 
     TITLE TXT_ID   TXT 
ID         
2 TITLE-2 7, 5, 6 ABC, XYZ, MNQ 
+0

ああ、持っています。ありがとう – Fizi

関連する問題