Я хочу применить несколько функций из нескольких столбцов к объекту 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
:
Однако я подозреваю, что есть лучший способ, например:
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
.
Я нашел этот вопрос и ответ, но решения выглядят довольно уродливо для меня, и учитывая, что ответ почти четыре года, может быть, лучше путь к настоящему времени.