Python 透视 Table 列中的多个小计

Python Pivot Table multi Sub-totals in column

我希望能够以不同的方式显示来自多索引数据透视表 table 的小计列,例如,我想显示所选行的总和以及另一个,这可能吗?

我设法获得了一半的代码正确,但我一直在复制代码而不抵消前一个代码,我无法循环此代码。

在我的示例中,我想获得 Toyota 的最大值和 Honda 的总和值,显示在新创建的 Total 列中。

cars = {'Brand': ['Honda','Toyota', 'Honda','Toyota'],
        'Target': ['A','B', 'A','B'],
        'Speed': [20, 80, 30 , 10],
        'Date' : ['13/02/2019', '18/02/2019', '18/02/2019', '13/02/2019']
       }

df = pd.DataFrame(cars)


table = pd.pivot_table(df, values=['Speed'],
                       index=['Target', 'Brand'],
                       columns=['Date'],
                       fill_value=0, aggfunc=np.sum, dropna=True)
table

创建的代码:(仅适用于最后一行,因为它会覆盖第一行)

table['Total'] = table.loc(axis=0)[:, ['Toyota']].max(axis=1)
table['Total'] = table.loc(axis=0)[:, ['Honda']].sum(axis=1)

当前输出:

期望的输出:

我还希望能够看到丰田的最大值,即 80。

使用slicers在两侧设置新值,此处:表示级别的所有值:

idx = pd.IndexSlice
table.loc[idx[:, 'Toyota'], 'Total'] = table.max(axis=1)
table.loc[idx[:, 'Honda'], 'Total'] = table.sum(axis=1)
print (table)
                   Speed            Total
Date          13/02/2019 18/02/2019      
Target Brand                             
A      Honda          20         30  50.0
B      Toyota         10         80  80.0

两边都可以设置和select:

idx = pd.IndexSlice
table.loc[idx[:, 'Toyota'], 'Total'] = table.loc[idx[:, 'Toyota'], :].max(axis=1)
table.loc[idx[:, 'Honda'], 'Total'] = table.loc[idx[:, 'Honda'], :].sum(axis=1)