2017-10-08 268 views
2

我有一個熊貓DataFrame,其中一些行對具有相同的ID但名稱不同。我想要的是將行對減少到一行,並顯示它們的名字。熊貓合併行

INPUT:

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

輸出:

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