Pandas Pivot - 汇总两个字段,从属字段和独立于定义的列



假设数据帧如下:

Name    |    Type    |    Year    |    Qty   | Amount
Mike        buy          2019        5          100          
James       return       2019        10         150
Mike        return       2019        15         200
James       buy          2019        20         250

我有兴趣将AmountType,然后Qty求和而不考虑type,例如:

Name  |  Year  |  buy  |  return  |  Qty
Mike     2019    100         200     20
James    2019    250         150     30   

我怎样才能以最快的方式实现这一目标?

我尝试过:df=pd.pivot_table(df, values=['Amount,'Qty'], index=['Name','Type','Year'], columns=['Type'], aggfunc='sum').reset_index()

但是,这会通过buyreturn聚合Qty,而不是不考虑TypeQty求和。

分组不同,因此concat两个groupby

pd.concat([df.groupby(['Name', 'Year', 'Type']).Amount.sum().unstack(-1),
df.groupby(['Name', 'Year',]).Qty.sum()], 
axis=1)
buy  return  Qty
Name  Year                  
James 2019  250     150   30
Mike  2019  100     200   20

最新更新