У меня есть следующие данные
user_id session_id youtube_id
1 1 2342
1 1 3523
1 2 3325
2 1 3423
2 1 2352
2 1 3333
2 2 2351
2 2 9876
2 3 2388
Цель состоит в том, чтобы сгруппировать по user_id
и рассчитать как total_sessions
, total_views
на пользователя, так и average views per session
.
user_id, total_sessions, total_views, average_view_per_session
1, 2, 3, 1.5
2, 3, 6, 2
result_df['avg'] = df.groupby('user_id').agg({
'session_id':lambda x : x.nunique(),
'youtube_id': 'count'}).apply(lambda x : x['total_views']/x['total_sessions']
Две проблемы с выше:
- результирующие столбцы по-прежнему называются
session_id
и youtube_id
, хотя они являются агрегациями
- как выполнить
division
, чтобы получить average_view_per_session
?
Приведенный выше подход дает ключевую ошибку, которая может быть связана с использованием исходного имени столбца для агрегированных столбцов.