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

如果值 Positive 在我的 pandas 数据框中连续出现超过 2 次(变为 Negative),我需要更改数据集的值,并且如果它是不同的 id,我也需要按 id 设置 id。如果Negative 在行循环中中断超过2 次,或者Negative 在一行中出现超过2 次,则不执行任何操作。


例子:


    id   status

0   3    Positive

1   3    Positive

2   3    Positive

3   2    Positive

4   1    Positive

5   2    Positive    

6   2    Positive

7   2    Positive

得到的 df 应该是:


    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


桃花长相依
浏览 95回答 1
1回答

慕田峪7331174

我们可以使用来计算, thengroupby().cumcount()的出现次数:idnp.wheremask = (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    status0   3  Positive1   3  Positive2   3  Negative3   2  Positive4   1  Positive5   2  Positive6   2  Negative7   2  Negative
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python