汇总具有多级索引的熊猫系列/数据框并插入结果

时间:2019-10-17 14:20:41

标签: python pandas dataframe

给出具有多级索引的熊猫Series(或DataFrame):

name          month          
A             2019-05        8
              2019-06        8
              2019-07        3
              2019-08        4
              2019-09        7
B             2019-06       10
              2019-07        5
              2019-08       23
              2019-09       10
              2019-10       13

如何在第二级汇总数据并将结果插入到数据中?

一个示例聚合为sum,结果为:

name          month          
A             sum            30         #added entry for A
              2019-05        8
              2019-06        8
              2019-07        3
              2019-08        4
              2019-09        7
B             sum           61          #added entry for B
              2019-06       10
              2019-07        5
              2019-08       23
              2019-09       10
              2019-10       13

2 个答案:

答案 0 :(得分:1)

这是使用unstack

的一种方法
s=df['count'].unstack()
s['sum']=s.sum(1)
s=s.stack()
name  month  
A     2019-05     8.0
      2019-06     8.0
      2019-07     3.0
      2019-08     4.0
      2019-09     7.0
      sum        30.0
B     2019-06    10.0
      2019-07     5.0
      2019-08    23.0
      2019-09    10.0
      2019-10    13.0
      sum        61.0
dtype: float64

答案 1 :(得分:1)

您只需要创建新的数据框和concat:

new_df = (df.groupby(level='name')
   .sum()
   .rename(columns={'count':'sum'})
   .stack()
   .to_frame(name='count')
)

pd.concat((new_df,df)).sort_index()

输出:

              count
name               
A    2019-05      8
     2019-06      8
     2019-07      3
     2019-08      4
     2019-09      7
     sum         30
B    2019-06     10
     2019-07      5
     2019-08     23
     2019-09     10
     2019-10     13
     sum         61