2017-01-16 4 views
0

sagen, dass ich die folgende Datenrahmen haben, und wollen die ys GROUPBY:Konvertieren eines Pandas groupby Objekt zur Liste der Datenrahmen

xs ys 
0 0 0 
1 1 0 
2 2 1 
3 3 1 

ich diese

grouped = df.groupby('ys') 

, indem Sie tun können, kann ich Iterieren durch dieses neue groupby Objekt fein, aber ich möchte stattdessen eine Liste der Datenrahmen, auf die von group in der folgenden Schleife zugegriffen wird:

for name, group in grouped: 
    do_something(group) 

Ist das möglich?

+0

Sie möchten eine Liste, auf die mit einem * Gruppennamen * zugegriffen wird? Das ist nicht möglich. Sie wollen wahrscheinlich ein 'dict'. –

+0

Nein, ich möchte nur eine Liste der Datenframes und kümmert sich nicht um die Namen. Habe gerade festgestellt, dass meine Schleife falsch war, sollte jetzt korrigiert werden –

Antwort

4

Sicher, nur über die Gruppen iterieren!

>>> import pandas as pd, numpy as np 
>>> df = pd.DataFrame(dict(xs=list(range(4)), ys=[0,0,1,1])) 
>>> df 
    xs ys 
0 0 0 
1 1 0 
2 2 1 
3 3 1 
>>> grouped = df.groupby('ys') 
>>> dataframes = [group for _, group in grouped] 
>>> dataframes 
[ xs ys 
0 0 0 
1 1 0, xs ys 
2 2 1 
3 3 1] 
>>> 
+0

Natürlich ... antwortete mir fast selbst in der Frage! Danke für die Antwort! –

Verwandte Themen