为了账号安全,请及时绑定邮箱和手机立即绑定

python pandas如果精确id连续出现n次,如何更改值

python pandas如果精确id连续出现n次,如何更改值

桃花长相依 2023-10-26 10:36:57
如果值 Positive 在我的 pandas 数据框中连续出现超过 2 次(变为 Negative),我需要更改数据集的值,并且如果它是不同的 id,我也需要按 id 设置 id。如果Negative 在行循环中中断超过2 次,或者Negative 在一行中出现超过2 次,则不执行任何操作。例子:    id   status0   3    Positive1   3    Positive2   3    Positive3   2    Positive4   1    Positive5   2    Positive    6   2    Positive7   2    Positive得到的 df 应该是:    id   status0   3    Positive1   3    Positive2   3    Negative3   2    Positive4   1    Positive5   2    Positive    6   2    Negative7   2    Negative
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我们可以使用来计算, thengroupby().cumcount()的出现次数:idnp.where


mask = (df['status'].eq('Positive')  # check for positive

            .groupby(df['id'])       # group by id

            .transform(lambda x:x.rolling(3).sum()) # count the consecutive positive in the last 3

            .eq(3)

       )

df.loc[mask, 'status'] = 'Negative'

输出:


   id    status

0   3  Positive

1   3  Positive

2   3  Negative

3   2  Positive

4   1  Positive

5   2  Positive

6   2  Negative

7   2  Negative


查看完整回答
反对 回复 2023-10-26
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信