Wie pandas groupby Dataframe per Schlüssel zugreifen

Wie kann ich den Zugriff auf die entsprechenden groupby-dataframe in eine groupby-Objekt mit dem Schlüssel? Mit den folgenden groupby:

rand = np.random.RandomState(1)
df = pd.DataFrame({'A': ['foo', 'bar'] * 3,
                   'B': rand.randn(6),
                   'C': rand.randint(0, 20, 6)})
gb = df.groupby(['A'])

Ich kann Durchlaufen, um die Schlüssel und Gruppen:

In [11]: for k, gp in gb:
             print 'key=' + str(k)
             print gp
key=bar
     A         B   C
1  bar -0.611756  18
3  bar -1.072969  10
5  bar -2.301539  18
key=foo
     A         B   C
0  foo  1.624345   5
2  foo -0.528172  11
4  foo  0.865408  14

Ich würde gerne in der Lage sein, etwas zu tun, wie

In [12]: gb['foo']
Out[12]:  
     A         B   C
0  foo  1.624345   5
2  foo -0.528172  11
4  foo  0.865408  14

Aber wenn ich das tun (naja, eigentlich habe ich zu tun gb[('foo',)]), bekomme ich diese seltsamen pandas.core.groupby.DataFrameGroupBy Sache, die offenbar nicht alle Methoden entsprechen den DataFrame ich will.

Die besten, die ich denken kann, ist

In [13]: def gb_df_key(gb, key, orig_df):
             ix = gb.indices[key]
             return orig_df.ix[ix]

         gb_df_key(gb, 'foo', df)
Out[13]:
     A         B   C
0  foo  1.624345   5
2  foo -0.528172  11
4  foo  0.865408  14  

aber das ist irgendwie fies, wenn man bedenkt, wie schön pandas in der Regel ist auf diese Dinge.

Was ist die integrierte Möglichkeit, dies zu tun?

InformationsquelleAutor der Frage beardc | 2013-02-06

Schreibe einen Kommentar