Python 如何在Pandas中的一组空列上执行groupby?
我偶然发现了一件关于熊猫的案子。我正在尝试使用agg fn,但没有进行分组。假设我希望在整个Python 如何在Pandas中的一组空列上执行groupby?,python,group-by,pandas,Python,Group By,Pandas,我偶然发现了一件关于熊猫的案子。我正在尝试使用agg fn,但没有进行分组。假设我希望在整个数据帧上进行聚合,即 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=数据帧(randn(5
数据帧上进行聚合,即
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=数据帧(randn(5,3),索引=列表(“ABCDE”),列=列表(“abc”))
DF.groupby([]).agg({'a':np.sum,'b':np.mean})#也不是很好,但是对于这种情况,如果传递一个返回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
,但它们不太明确,只能意外工作。使用类似的数据帧。聚合方法是一个好主意。在此处创建问题:
Cool@Wes MCKinney-也许你也可以让DF.groupby([])返回DF?ThxI还注意到,对于某些函数,如np.std
,这会给出一个错误:索引器:0-d数组不能被索引。
。这似乎扼杀了熊猫系列的额外结构。如果您使用lambda x:np.std(x.values)
作为传入函数,这将修复它。但这似乎是熊猫的责任。也许是一种“尝试-捕获”的方法,如果它不能按原样工作,那么在放弃之前也可以尝试将其应用于column.values?避免这种情况可能有很好的理由;只是一个建议。你能报告一个重现你所看到的问题吗?