pandas groupby:在一定条件下计算记录数

时间:2018-04-22 05:27:00

标签: python-2.7 pandas pandas-groupby

我有以下代码:

df_user_data = df.groupby(['user_name']) \
                 .apply(lambda x: pd.Series( \
                {'user_mean_amount': sum(x['user_amount'])/len(x), \
                 'user_game_count':len(x), \
                 'user_win_count':len(x['result'] == 'Won') \
                })).reset_index()

字段user_game_count计算给定用户的总记录,user_win_count计算result == 'Won'的记录数。但是,这两个字段输出相同的值。我在这里做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为需要改变:

'user_win_count':len(x['result'] == 'Won')

为:

'user_win_count':(x['result'] == 'Won').sum()

仅计算True个值。如果使用len,则返回df的长度,因此获得相同的输出。

另外

sum(x['user_amount'])/len(x)

应简化为:

x['user_amount'].mean()