汇总特定列中第二级索引的最后一行中的每个第一级索引

时间:2018-12-31 18:27:33

标签: python pandas

我有一个二级索引...简化如下...

Raw Material Product Sold Quantity Consumed Total Sales
    A            B             40              100
                 C             40              200
                 D             40              300
              Summary          NaN             NaN

实际df具有多种原材料,并且遵循与上述相同的结构。

我的预期结果是使摘要行(二级索引)显示在“消耗的数量”列下的最后一个观察值(40)和“销售总额”列的观察值之和(600):

Raw Material Product Sold Quantity Consumed Total Sales
    A            B             40              100
                 C             40              200
                 D             40              300
              Summary          40              600

我尝试复制df并汇总以在(A和Summary)上进行合并,但是df的reset_index()在与字符串Summary的行相同的行中没有A,因此合并会带来零值。试图做fillna变成A,但这也不起作用。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用ffill,使Quantity Consumed的最后一行显示您提到的最后一个观察值,并取sum中值的Total Sales以便更新summary中的值:

df.iloc[:, 0] = df.iloc[:, 0].ffill()
df.iloc[[-1], -1] = df.iloc[:, -1].sum()

            Quantity Consumed  Total Sales
A B                    40.0       100.0
  C                    40.0       200.0
  D                    40.0       300.0
  Summary              40.0       600.0