pandas,将多个列的多个函数应用于groupby obj

2024-05-28 22:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将多个列的多个函数应用于groupby对象,这将产生一个新的pandas.DataFrame

我知道如何分步做:

by_user = lasts.groupby('user')
elapsed_days = by_user.apply(lambda x: (x.elapsed_time * x.num_cores).sum() / 86400)
running_days = by_user.apply(lambda x: (x.running_time * x.num_cores).sum() / 86400)
user_df = elapsed_days.to_frame('elapsed_days').join(running_days.to_frame('running_days'))

结果user_df是: user_df

不过,我怀疑还有更好的办法,比如:

by_user.agg({'elapsed_days': lambda x: (x.elapsed_time * x.num_cores).sum() / 86400, 
             'running_days': lambda x: (x.running_time * x.num_cores).sum() / 86400})

但是,这不起作用,因为AFAIKagg()pandas.Series起作用。

我确实找到了this question and answer,但解决方案对我来说相当难看,而且考虑到答案已经将近四年了,现在可能有更好的方法了。


Tags: tolambdapandasdfbytimedayscores

热门问题