У меня было два фрейма данных, которые я объединил на основе идентификатора пользователя и получил следующий фрейм данных, что хорошо:
junkdf = df = DataFrame({'User_ID': [340,558,558,558,983,422,100,740,740],
'Transaction_Type_x': ['Purchase', 'Purchase', 'Purchase', 'Purchase', 'Purchase', 'Purchase', 'Purchase', 'Purchase', 'Purchase'],
'Rev/Payout_x': [50, 20, 20,28,37,50,40,50,55],
'Cohort_x': ['2010-01','2010-01','2010-02','2010-2','2010-02','2010-02','2010-03','2010-04','2010-04'],
'Transaction_Type_y': ['Sale','Sale','Sale','Sale','Sale','Sale','Sale','Sale','Sale'],
'Rev/Payout_y': [33,42,66,69,100,22,19,98,39],
'Cohort_y' : ['2010-03','2010-01','2010-01','2010-04','2010-04','2010-02','2010-01','2010-03','2010-02']})
junkdf2 =junkdf[['User_ID','Transaction_Type_x','Rev/Payout_x','Cohort_x',
'Transaction_Type_y','Rev/Payout_y','Cohort_y']]
junkdf2
Мне было интересно, смогу ли я использовать функцию groupby для создания мультииндексного фрейма данных, в котором общие значения cohort_x и cohort_y объединяются для создания нового столбца с именем 'Cohort.
Затем я мог бы использовать .agg, чтобы подсчитать общее количество пользователей, которые купили что-то в этом месяце (total_users_x), и количество, которые продали что-то в этом месяце, и суммировать доход для x и y. В идеале это выглядело бы примерно так:
Total_Users_x Rev/Payout_x total_user_y Rev/Payout_y
Cohort
2010-01 2 70 3 132
2010-02 x x x x
2010-03 x x x x
2010-04 x x x x