我想将多个列的多个函数应用于groupby对象,这会导致新的pandas.DataFrame
。pandas,将多个列的多个函数应用于groupby对象
我知道该怎么做,在单独的步骤:
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,但解决方案对我而言看起来相当难看,考虑到答案已接近四年,现在可能会有更好的方法。