3

我正在处理熊猫的一个角落案例。我正在尝试使用 agg fn 但没有进行 groupby。假设我想要对整个进行聚合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 回答