Python pandas-查找每个用户的首次出现次数

Python pandas-查找每个用户的首次出现次数,python,pandas,data-manipulation,Python,Pandas,Data Manipulation,我有一个熊猫数据框,如下所示: userID value step 1 bad 1 1 bad 2 1 good 3 2 good 1 2 bad 2 ... 3000 good 200 用户多次为某个值打分。它可以是坏的,也可以是好的,并且有一个步骤编号跟踪用户得分的次数 我想在这一步中第一次发现一个用户对每个用户的评分都很好。例如,对

我有一个熊猫数据框,如下所示:

 userID   value   step
  1        bad     1
  1        bad     2
  1        good    3
  2        good    1
  2        bad     2
  ...
  3000     good    200
用户多次为某个值打分。它可以是坏的,也可以是好的,并且有一个步骤编号跟踪用户得分的次数

我想在这一步中第一次发现一个用户对每个用户的评分都很好。例如,对于用户1,它将是3,对于用户2,它将是1,等等


然后计算用户的第一步/总步的分数。例如,对于第一个用户,它将是3/3,对于第二个用户,它将是1/2。

思想是用缺少的值替换
步骤
值,如果不匹配
良好
比较,则创建新的列,然后根据,对于第一个非
NaN
值,通过与进行聚合,并按进行计数,将
系列
除以并最后转换为
数据帧


想法是用缺少的值替换
步骤
值,如果不匹配
良好
比较,则创建新列,然后对第一个非
NaN
值进行聚合,然后计数,除以,最后将
系列
转换为
数据帧

df = (df.assign(new = df['step'].where(df['value'].eq('good')))
        .groupby('userID')
        .agg({'new':'first', 'value':'size'})
        .eval('new / value')
        .reset_index(name='score')
        )
print (df)
   userID  score
0       1    1.0
1       2    0.5
2    3000  200.0