web-dev-qa-db-ja.com

pandasシリーズのマルチインデックスレベルの合計

PythonでPandasパッケージを使用して、3レベルのマルチインデックスを持つシリーズの1レベルを合計(マージナライズ)して、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

変数Cを合計して、次の出力を生成します。

A  B    277
   b     37
a  B    159
   b     16

Pandasこれを行うための最良の方法は何ですか?

28
dylkot

最初の2つのレベルで常に集計したいことがわかっている場合、これは非常に簡単です。

In [27]: data.groupby(level=[0, 1]).sum()
Out[27]:
A  B    277
   b     37
a  B    159
   b     16
dtype: int64
39
chrisaycock