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?
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