web-dev-qa-db-fra.com

Somme sur un niveau multi-index dans une série pandas

En utilisant le Pandas package en python, je voudrais additionner (marginaliser) sur un niveau dans une série avec un multiindex à 3 niveaux pour produire une série avec un multiindex à 2 niveaux. Par exemple, si J'ai les éléments suivants:

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

Je voudrais résumer la variable C pour produire la sortie suivante:

A  B    277
   b     37
a  B    159
   b     16

Quelle est la meilleure façon de Pandas faire cela?

28
dylkot

Si vous savez que vous voulez toujours agréger les deux premiers niveaux, c'est assez simple:

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