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
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin
set_index
:Quand je tente de me servir de cette réponse, je reçois un
AttributeError
. "Impossible d'accéder à "callable" attribut "set_index' de 'DataFrameGroupBy' objets, essayez d'utiliser la "appliquer" la méthode"Il semble
data
n'est pasDataFrame
, mais la sortie de groupby - donc le besoin deg = df.groupby('col')
et puisg.apply(lambda x: x['col1'].set_index())
Cela ne veut pas répondre à la vraie question: comment faire pour convertir DataFrameGroupBy à DataFrame.
Vous avez raison, le titre est faux. Mieux devrait être de savoir comment convertir MultiIndex de colonnes dans DataFrame.
OriginalL'auteur jezrael