我想將多個列的多個函數應用於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,但解決方案對我而言看起來相當難看,考慮到答案已接近四年,現在可能會有更好的方法。