我正在大熊猫的一个角落里打。我试图使用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'])
,但这看起来有点人为。
有没有人有更清洁的解决方案?
答案 0 :(得分:3)
它也不是那么好,但是对于这种情况,如果你传递的函数至少返回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
,但它们不那么明确,只是意外工作。
答案 1 :(得分:2)
使用类似的DataFrame.aggregate
方法是个好主意。在这里创建一个问题: