2016-06-21 6 views
3

Gibt es eine Funktion ähnlich agg, die keinen groupby Aufruf zuerst erfordert?Aufruf von agg ohne zuerst groupby anzurufen

Zum Beispiel habe ich oft schon eine Agg-Map geschrieben und möchte die Map für die gesamte Tabelle auswerten.

Deshalb möchte ich

data = data.groupby("key").agg({"foo1":"sum", "foo2":"mean"})

zu

data = data.agg({"foo1":"sum", "foo2":"mean"})

ich dies derzeit ändern, indem Sie einen falschen Schlüssel eingeführt wird, und dann auf die Aggregation. Aber das ist ein Hack. Gibt es einen besseren Weg?

Antwort

2

UPDATE: als @root im Kommentar vorgeschlagen, wäre es von np.repeat(0, len(df)) einfacher und eleganter zu einer Gruppe sein:

In [5]: df.groupby(np.repeat(0, len(df))).agg({'A':'sum', 'B':'mean', 'C':'min'}) 
Out[5]: 
     B A C 
0 42.9 484 21 

ALTE Antwort:

davon aus, dass Sie einen numerischen haben Index, der immer >= 0 ist:

In [139]: df.groupby(df.index >= 0, as_index=False).agg({'A':'sum', 'B':'mean', 'C':'min'}) 
Out[139]: 
    A  B C 
0 484 42.9 21 

oder unter der Annahme, dass Ihr Index nicht NaN s

In [140]: df.groupby(df.index==df.index, as_index=False).agg({'A':'sum', 'B':'mean', 'C':'min'}) 
Out[140]: 
    A  B C 
0 484 42.9 21 

wenn Ihr Index NaN kann den folgenden Trick, die Nutzung hat:

In [160]: df.groupby(pd.notnull(df.index) | pd.isnull(df.index), as_index=False).agg({'A':'sum', 'B':'mean', 'C':'min'}) 
Out[160]: 
    A  B C 
0 484 42.9 21 

Daten:

In [138]: df 
Out[138]: 
    A B C 
0 34 45 68 
1 71 62 61 
2 39 51 33 
3 38 62 27 
4 16 39 21 
5 94 41 41 
6 14 11 41 
7 76 40 29 
8 44 34 70 
9 58 44 68 
+1

können nicht Sie einfach nach 'np.repeat (1, len (df))' oder einem gleichwertigen Listenverständnis gruppieren, ohne sich um den Index kümmern zu müssen? – root

+0

@root, guter Fang, danke! – MaxU

+0

Kein Problem, ich hätte nicht gedacht, ohne Ihre Antwort zu sehen! Nach ein wenig mehr Nachdenken wäre vielleicht 'np.repeat (0, len (df))' etwas besser, also ist der resultierende Index '0' statt '1' und damit konsistenter mit den üblichen Konventionen. – root

Verwandte Themen