Pandas 基于将列分组为一个数据透视表

Pandas pivot based on grouping columns as one

我有以下数据框:

Name            Account       Revenue 1    Revenue 2
John A          Set-up        100.00       0.00
Peter K         Slot          250.00       0.00
Michael S       Set-up        0.00         25.00

我正在尝试使用 pandas 数据透视函数,因此我可以将 Account 值作为列,但将 Revenue 1Revenue 2 加在一起。

df=df.pivot_table(data=df,index=['Name'],columns=['Account'])

但它正在返回以下数据框:

               Revenue 1            Revenue 2
Name           Set-up      Slot     Set-up
John           100.00      0.00     0.00
Peter K        0.00        250.00   0.00
Michael S      0.00        0.00     25.00

我想要的是将两种收入类型相加并显示在相同的帐户类型中,如下所示:

Name           Set-up     Slot   
John           100.00     0.00
Peter K        0.00       250.00
Michael S      25.00      0.00

大家有什么想法吗?

您可以在旋转前对 Revenue 秒求和:

df['Revenue'] = df.filter(like='Revenue').sum(axis=1)
df=df.pivot_table(index='Name',
                  columns='Account', 
                  values='Revenue', 
                  fill_value=0, 
                  aggfunc='sum')
print (df)
Account    Set-up  Slot
Name                   
John A        100     0
Michael S      25     0
Peter K         0   250

你的解决方案和 sum 旋转后:

df=df.pivot_table(index='Name',columns='Account',aggfunc='sum').groupby(level=1,axis=1).sum()
print (df)
Account    Set-up   Slot
Name                    
John A      100.0    0.0
Michael S    25.0    0.0
Peter K       0.0  250.0