【发布时间】:2016-11-10 16:06:47
【问题描述】:
我想将多列的多个函数应用于一个 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'))
但是我怀疑有更好的方法,例如:
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})
但是,这不起作用,因为 AFAIK agg() 适用于 pandas.Series。
我确实找到了this question and answer,但解决方案对我来说看起来相当难看,并且考虑到答案已经将近四年了,现在可能有更好的方法。
【问题讨论】:
标签: python pandas dataframe group-by