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