如何在具有多索引数据帧的groupby或ivot_table之后对特定级别的数据求和

时间:2019-12-17 23:43:17

标签: python pandas pivot-table

这是我的问题示意图。

按如下所示为数据框运行“ groupby”或“ pivot_table”后,得到了具有“ A”,“ B”索引的数据框。但是,我不需要更多数据。因此,我想在特定索引级别汇总数据。

然后我可以得到最后一个数据帧。 b应该总结e \ f索引数据,1 + 1 = 2

此功能类似于Excel中的折叠行为。我检查了文档(pivot_table),但“边距”此参数不符合此要求。

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:0)

我不知道这样的功能,但这是一种解决方法:

df
     C
A B
a p  1
  q  1
d r  2
  s  2
b t  3
  v  3
  w  3
c x  4
  y  4

fld=["d","b","c"]
nfidx=df.index.levels[0].difference(fld)

   Index(['a'], dtype='object', name='A')


df2= df.loc[fld].groupby("A").sum()

       C
    A
    b  9
    c  8
    d  4

mi= pd.MultiIndex.from_product([df2.index,[np.nan]],names=["A","B"])

    MultiIndex([('b', nan),
                ('c', nan),
                ('d', nan)],
               names=['A', 'B'])

df2.index=mi

           C
    A B
    b NaN  9
    c NaN  8
    d NaN  4

pd.concat([ df.loc[nfidx],df2])

           C
    A B
    a p    1
      q    1
    b NaN  9
    c NaN  8
    d NaN  4