在熊猫系列中总结多指数水平

dyl*_*kot 30 python statistics multi-index pandas

在python中使用Pandas包,我想在一个系列中使用3级多索引对一个级别进行求和(边缘化)以生成具有2级多索引的系列.例如,如果我有以下内容:

ind = [tuple(x) for x in ['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']]
mi = pd.MultiIndex.from_tuples(ind)
data = pd.Series([264, 13, 29, 8, 152, 7, 15, 1], index=mi)

A  B  C    264
      c     13
   b  C     29
      c      8
a  B  C    152
      c      7
   b  C     15
      c      1
Run Code Online (Sandbox Code Playgroud)

我想总结变量C以产生以下输出:

A  B    277
   b     37
a  B    159
   b     16
Run Code Online (Sandbox Code Playgroud)

熊猫做这件事的最佳方式是什么?

chr*_*ock 42

如果你知道你总是希望在前两个级别聚合,那么这很容易:

In [27]: data.groupby(level=[0, 1]).sum()
Out[27]:
A  B    277
   b     37
a  B    159
   b     16
dtype: int64
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,你也可以做``data.sum(level = [0,1])`` (37认同)
  • 如何将级别名称合并到列/索引名称中? (2认同)
  • 与此同时,自 @Jeff 发表评论以来,“df.sum(level=...)”已被弃用,并发出警告“df.groupby(levels=...).sum()”是正确的方法它。 (2认同)