根据两个现有列的相应值创建一个新列

时间:2018-04-28 23:50:26

标签: python pandas

我有两个基于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}}

1 个答案:

答案 0 :(得分:2)

IIUC 使用wide_to_long增加您的df,然后我们使用agggroupby + 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