如果值 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
添加回答
举报
0/150
提交
取消