data4_pivot = data4.pivot_table(index=['user_id', 'month'], values=['distance', 'duration', 'name', 'subscription_type'], aggfunc={'distance':'sum', 'duration':'sum', 'name':'count', 'subscription_type' : 'nunique'}) data4_pivot.columns = ['total_distance', 'total_duration', 'trip_count', 'subscription_type'] data4_pivot['total_duration'] = round(data4_pivot['total_duration'], 0) def money(subscription_type): if subscription_type == 'ultra': return data4_pivot['total_duration'] * 6 + data4_pivot['subscription_type'].count() * 199 if subscription_type == 'free': return data4_pivot['total_duration']*8 + data4_pivot['subscription_type'].count() * 50 data4_pivot['money'] = data4_pivot['subscription_type'].apply(money) data4_pivot