2017-07-26 66 views
3

我有一個熊貓數據幀:GROUPBY 1列和其他列的總和作爲新的數據幀熊貓

id won lost match 
v1  1  0  1 
v1  2  1  3 
v1  0  5  8 
v2  3  1  7 
v2  5  5  12 

我想GROUPBY ID和總結其他列,比如我碰到一個DF

id total_won total_lost total_match 
v1  3    6    12 
v2  8    6    19 

我如何使用熊貓groupby和求和操作來求和多列。 我試過用這個:

pd.groupby('id')['won'].sum() 
pd.groupby('id')['lost'].sum() 
pd.groupby('id')['match'].sum() 

有沒有更好的方法來做到這一點?

回答

4

使用groupby沒有定義列 - 骨料所有numeric columns總結,然後add_prefix和最後reset_index

df1 = df.groupby('id').sum().add_prefix('total_').reset_index() 
print (df1) 
    id total_won total_lost total_match 
0 v1   3   6   12 
1 v2   8   6   19 

如果需要指定多個列,加列list

cols = ['won','lost'] 
df1 = df.groupby('id')[cols].sum().add_prefix('total_').reset_index() 
print (df1) 
    id total_won total_lost 
0 v1   3   6 
1 v2   8   6