Pandas 通过聚合将多个函数应用于多个列

Pandas 通过聚合将多个函数应用于多个列,pandas,group-by,Pandas,Group By,有一个dataframe,需要对许多列应用相同的计算,目前我正在手动进行。 有什么好的、优雅的方法可以做到这一点吗 tt = pd.DataFrame(data={'Status' : ['green','green','red','blue','red','yellow','black'], 'Group' : ['A','A','B','C','A','B','C'], 'City' : ['Toronto','Montreal','Vancouver','Toronto','Edmo

有一个dataframe,需要对许多列应用相同的计算,目前我正在手动进行。 有什么好的、优雅的方法可以做到这一点吗

tt =  pd.DataFrame(data={'Status' : ['green','green','red','blue','red','yellow','black'],
 'Group' : ['A','A','B','C','A','B','C'],
 'City' : ['Toronto','Montreal','Vancouver','Toronto','Edmonton','Winnipeg','Windsor'],
 'Sales' : [13,6,16,8,4,3,1], 'Counts' : [100,200,50,30,20,10,300]})


ss = tt.groupby('Group').agg({'Sales':['count','mean',np.median],\
                              'Counts':['count','mean',np.median]})
ss.columns =  ['_'.join(col).strip() for col in ss.columns.values]
所以结果是


如果我有一个非常大的数据帧,我如何对每列具有相同计算、计数、平均值、中值的许多列执行此操作?

在pandas中,agg操作对相关列应用单个或多个单独的方法,并返回输出的摘要。在python中,列表保存并解析多个实体。在本例中,我将函数列表传递给聚合器。在您的例子中,您正在解析一个字典,这意味着您必须单独处理每一列,使其非常手动。如果不清楚,欢迎进一步解释

ss=tt.groupby('Group').agg(['count','mean','median'])
ss.columns =  ['_'.join(col).strip() for col in ss.columns.values]
ss