Pandas 如何在数据透视表中获取总计

Pandas 如何在数据透视表中获取总计,pandas,pivot-table,Pandas,Pivot Table,正在尝试使用total获得以下结果: AssetLifecycleStatus Balance Deployed Type Environment OS Model SupplierA Network 1 Win 10 Model 1 4.0 10.0

正在尝试使用total获得以下结果:

   AssetLifecycleStatus                             Balance  Deployed
       Type       Environment OS     Model                         
   SupplierA      Network 1   Win 10 Model 1                4.0      10.0   
                                     Model 2                4.0       7.0   
                  Network 2   Win 10 Model 1               10.0       5.0   
                              Win 7  Model 2                NaN       1.0   
                                     Model 3                NaN       6.0  
   SupplierB      Network 1   Win 10 Model 1                4.0       8.0   
                                     Model 2                4.0       5.0   
                  Network 2   Win 10 Model 3               10.0       5.0   
                              Win 7  Model 2                NaN       1.0   
                                     Model 3                NaN       6.0

对熊猫和蟒蛇来说都是新鲜事。如何获取数据透视表底部的总计。已尝试concat,但结果不符合预期。索引1、2、3变为单行项。

您可以将元组转换为列表,因为元组在更改
4时是不可变的。将第th
元素转换为
Total
,然后通过以下方式添加新行:

您还可以使用:

print (df.index[-1])
('SupplierB', 'Network 2', 'Win 7', 'Model 3')

idx = list(df.index[-1])
idx[3] = 'Total' 
print (idx)
['SupplierB', 'Network 2', 'Win 7', 'Total']

df.loc[tuple(idx)] = df.sum()

print (df)
                                      Balance  Deployed
Type      Environment OS     Model                     
SupplierA Network 1   Win 10 Model 1      4.0      10.0
                             Model 2      4.0       7.0
          Network 2   Win 10 Model 1     10.0       5.0
                      Win 7  Model 2      NaN       1.0
                             Model 3      NaN       6.0
SupplierB Network 1   Win 10 Model 1      4.0       8.0
                             Model 2      4.0       5.0
          Network 2   Win 10 Model 3     10.0       5.0
                      Win 7  Model 2      NaN       1.0
                             Model 3      NaN       6.0
                             Total       36.0      54.0

什么是a,b,c,d?我看到许多帖子也使用这种格式,但我没有领会。我认为第二种解决方案更好,所以第一种方案被删除。a、b、c、d解决方案工作得非常好!我终于明白它的用途了。试图理解idx解决方案。
print (df.index[-1])
('SupplierB', 'Network 2', 'Win 7', 'Model 3')

idx = list(df.index[-1])
idx[3] = 'Total' 
print (idx)
['SupplierB', 'Network 2', 'Win 7', 'Total']

df.loc[tuple(idx)] = df.sum()

print (df)
                                      Balance  Deployed
Type      Environment OS     Model                     
SupplierA Network 1   Win 10 Model 1      4.0      10.0
                             Model 2      4.0       7.0
          Network 2   Win 10 Model 1     10.0       5.0
                      Win 7  Model 2      NaN       1.0
                             Model 3      NaN       6.0
SupplierB Network 1   Win 10 Model 1      4.0       8.0
                             Model 2      4.0       5.0
          Network 2   Win 10 Model 3     10.0       5.0
                      Win 7  Model 2      NaN       1.0
                             Model 3      NaN       6.0
                             Total       36.0      54.0
a,b,c,d = df.index[-1]
df.loc[(a,b,c,'Total')] = df.sum()