2015-05-11 151 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