我有两个基于User_ID合并在一起的数据框,并获得了以下数据框,这很好:
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
我想知道我是否可以使用groupby函数创建一个多索引数据框,其中cohort_x和cohort_y的常用值组合在一起以创建一个名为'Cohort的新列。
然后我可以使用.agg来计算当月购买东西的用户总数(total_users_x)和当月销售东西的数量,并计算x和y的收入。理想情况下看起来像这样:
{{1}}
答案 0 :(得分:2)
IIUC
使用wide_to_long
增加您的df,然后我们使用agg
与groupby
+ unstack
一起计算并格式化结果
s=pd.wide_to_long(junkdf2[['Cohort_x','Cohort_y','Rev/Payout_x','Rev/Payout_y']].reset_index().reset_index(),stubnames=['Rev/Payout','Cohort'],i=['index','User_ID'],j='xory',sep='_',suffix='\w+').set_index('Cohort',append=True)
s.reset_index(inplace=True)
s.groupby(['Cohort','xory']).agg({'Rev/Payout':'sum','User_ID':'nunique'}).unstack()
Out[298]:
User_ID Rev/Payout
xory x y x y
Cohort
2010-01 2 2 70 127
2010-02 3 2 135 61
2010-03 1 2 40 131
2010-04 1 2 105 169