Python Pandas convertir GroupBy objet de DataFrame

Question

Il y a deux questions qui ressemblent, mais ils ne sont pas à la même question: ici et ici. Ils ont tous deux appel à une méthode de GroupBy, comme count() ou aggregate(), qui, je le sais renvoie une DataFrame. Ce que je demande est de savoir comment convertir le GroupBy (classe pandas.core.groupby.DataFrameGroupBy) objet lui-même dans un DataFrame. Je vais illustrer ce point ci-dessous.

Exemple

Construire un exemple DataFrame comme suit.

data_list = []
for name in ["sasha", "asa"]:
    for take in ["one", "two"]:
        row = {"name": name, "take": take, "score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)}
        data_list.append(row)
data = pandas.DataFrame(data_list)

Ci-dessus DataFrame devrait ressembler à celui-ci (avec numéros différents, évidemment).

    name  ping     score take
0  sasha    72  0.923263  one
1  sasha    14  0.724720  two
2    asa    76  0.774320  one
3    asa    71  0.128721  two

Ce que je veux faire est de groupe par les colonnes "nom" et "prendre" (dans cet ordre), de sorte que je peux obtenir un DataFrame indexés par le multiindex construit à partir de la colonne "nom" et "prendre", comme ci-dessous.

               score  ping
 name take        
sasha  one  0.923263    72
       two  0.724720    14
  asa  one  0.774320    76
       two  0.128721    71

Comment puis-je y parvenir? Si je ne grouped = data.groupby(["name", "take"]), puis grouped est un pandas.core.groupby.DataFrameGroupBy instance. Comment puis-je convertir des grouped à un DataFrame exemple?

OriginalL'auteur Ray | 2016-10-25