Pandas Groupby将用于聚合的列组合在一起

时间:2015-05-11 03:30:23

标签: python pandas

我有一个像下面这样的Pandas数据框。我找到每个OWNNAME(1,2)

的TOTACTVAL值的总和
    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 个答案:

答案 0 :(得分:1)

在' TOTACTVAL'上设置索引并取消堆叠到-1级并重置索引

using ProjectB;

//...

public void MyFunc()
{
    var unitOfWork = new UnitOfWork(1);
    // ...
    var context = unitOfWork.Context;
    // ...
}

重命名未堆叠的列

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

分组,总和和排序。需要newdf.rename(columns={0: 'Name'}, inplace=True) 才能将生成的系列(包含reset_index索引)转换回包含两列(NameName

的DataFrame
TOTACTVAL

打印:

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