3

パンダのコーナーケースを叩いています。私はaggfnを使おうとしていますが、グループ化はしていません。dataframe全体の集計が必要だとしましょう。

from pandas import *
DF = DataFrame( randn(5,3), index = list( "ABCDE"), columns = list("abc") )
DF.groupby([]).agg({'a' : np.sum, 'b' : np.mean } ) # <--- does not work

そしてDF.agg( {'a' ... } )、どちらも動作しません。

私の回避策は、DF['Total'] = 'Total'それから実行することですDF.groupby(['Total'])が、これは少し人工的なようです。

誰かがよりクリーンな解決策を手に入れましたか?

4

2 に答える 2

4

それもそれほど素晴らしいものではありませんが、この場合、少なくとも True を返す関数を渡す場合、変更する必要はありませんdf:

>>> from pandas import *
>>> df = DataFrame( np.random.randn(5,3), index = list( "ABCDE"), columns = list("abc") )
>>> df.groupby(lambda x: True).agg({'a' : np.sum, 'b' : np.mean } )
             a         b
True  1.836649 -0.692655
>>> 
>>> df['total'] = 'total'
>>> df.groupby(['total']).agg({'a' : np.sum, 'b' : np.mean } ) 
              a         b
total                    
total  1.836649 -0.692655

代わりにさまざまなビルトインを使用できますlambda x: Trueが、それらはあまり明示的ではなく、偶然にしか機能しません。

于 2012-07-15T14:36:30.357 に答える
2

類似のDataFrame.aggregate方法を持つことは良い考えです。ここで問題を作成します。

https://github.com/pydata/pandas/issues/1623

于 2012-07-15T15:20:22.377 に答える