2015-05-11 190 views
0

我有一個像下面的熊貓數據框。我該怎麼找TOTACTVAL值的每個OWNNAME總和(1,2)Pandas Groupby結合列聚合

OWNNAME1  OWNNAME2 TOTACTVAL 
0  Fred  John   100 
1  Scott  Fred   200 
2  John   Pascal  150 
3  Connor  Fred   50 

我希望通過TOTACTVAL

Name TOTACTVAL 
Fred 350 
John 250 
Scott 200 
Pascal 150 
Connor 50 

回答

1

上排序「TOTACTVAL」設置索引和拆散到水平的結果 - 1和復位索引

newdf = df.set_index('TOTACTVAL').unstack(-1).reset_index() 

重命名未疊加柱

newdf.rename(columns={0: 'Name'}, inplace=True) 

組,和和排序。該reset_index需要兩列(NameTOTACTVAL

newdf = newdf.groupby('Name')['TOTACTVAL'].apply(sum).reset_index() 
newdf.sort('TOTACTVAL', ascending=False) 

這版畫改造所產生的系列(含Name指數)回數據幀:

 Name TOTACTVAL 
1 Fred  350 
2 John  250 
4 Scott  200 
3 Pascal  150 
0 Connor   50 
+0

這偉大的工作,謝謝!有一件事我必須改變,也許你可以爲我自己和其他人發表評論。 DataFrame實際上有更多的列。我必須創建一個新的df,其中只包含我的示例中的列,以便使其工作。 – Vincent

+0

是的,如果有更多的列,堆棧會產生不同的結果,所以有必要在答案中提供的第一步之前對數據框進行子集化,其中假設OP發佈了一個數據幀。 –

+0

我正在閱讀抨擊文檔。是否可以包含額外的列進行求和,並返回一個額外的列? – Vincent