2017-10-08 1 views
2

私はパンダのDataFrameを持っていますが、いくつかの行のペアはIDが同じで名前は異なります。私が望むのは、行のペアを1行に減らし、その両方の名前を表示することです。パンダマージ行

INPUT:

ID NAME  AGE 
149 Bob  32 
150 Tom  53 
150 Roberts 53 
151 Pamela 28 
152 Andrew 23 

OUTPUT:

ID NAME  AGE 
149 Bob   32 
150 Tom Roberts 53 
151 Pamela  58 
152 Andrew  23 

そうでなければ、私はまた、[ 'トム'、 'ロバーツ']、またはまだデータをキャプチャする他の方法を行うことができます。

答えて

2

groupbyで簡単に実行できます。

df = df.groupby('ID', as_index=False)\ 
     .agg({'NAME' : ' '.join, 'AGE' : 'first'}) 

print(df)  
ID   NAME AGE 
149   Bob 32 
150 Tom Roberts 53 
151  Pamela 28 
152  Andrew 23 
+0

ありがとう!さて、別の列(更新された質問)とは対照的に、名前を集約したいだけの場合はどうですか? – Landmaster

+1

@Landmaster申し訳ありませんが、あなたは 'df [['ID'、 'NAME']]。groupby( 'ID'、as_index = False).agg( '' .join)'を使うことができます。 –

+0

@COLDSPEEDあなたは、あなたの出力が上記のように元のフレームにどのように割り当てますか?今、それは私に年齢の列を与えていない。 – Landmaster