2017-10-17 77 views
1

我有一個列數列,但有三個我感興趣的數據框。這些是name,yeargoals_scored。這些列中沒有一個是獨特的,比如我有一個像下面幾行:熊貓groupby()在一列,然後求和另一個

Name   Year  Goals_scored 
John Smith  2014  3 
John Smith  2014  2 
John Smith  2014  0 
John Smith  2015  1 
John Smith  2015  1 
John Smith  2015  2 
John Smith  2015  1 
John Smith  2015  0 
John Smith  2016  1 
John Smith  2016  0 

我所要做的是創建一個新的數據幀在那裏我有4列。一個用於名稱,然後是2014年,2015年和2016年的每個年份。最後三列是所討論年份的目標總和。因此,使用上面的數據將看起來像:

Name   2014  2015  2016 
John Smith 5  5  1 

更糟糕的是,他們只希望它包含那些有三年的東西。

任何人都可以指向正確的方向嗎?

回答

2

極品groupby,總sum和重塑通過unstack

df = df.groupby(['Name','Year'])['Goals_scored'].sum().unstack() 
print (df) 
Year  2014 2015 2016 
Name       
John Smith  5  5  1 

替代pivot_table

df = df.pivot_table(index='Name',columns='Year', values='Goals_scored', aggfunc='sum') 
print (df) 
Year  2014 2015 2016 
Name       
John Smith  5  5  1 

末列從指數:

df = df.reset_index().rename_axis(None, 1) 
print (df) 
     Name 2014 2015 2016 
0 John Smith  5  5  1