You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame如何根据条件将连续相同值设为nan直到数值变化

实现思路

  1. 对Value列的连续相同值进行分组,给每个连续组分配唯一的分组ID
  2. 筛选出所有包含Criterion=1的分组
  3. 将这些分组对应的Value值全部替换为np.nan

完整实现代码

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame({
    'Value': [3,3,5,7,2,2,8,8,8,1],
    'Criterion': [0,0,1,0,0,0,1,0,0,0]
})

# 给连续相同的Value值打分组标签
df['value_group'] = (df['Value'] != df['Value'].shift()).cumsum()
# 标记所有包含Criterion=1的分组
mask = df.groupby('value_group')['Criterion'].transform('any')
# 替换符合条件的分组的Value为nan
df.loc[mask, 'Value'] = np.nan
# 删除辅助列
df = df.drop(columns='value_group')

print(df)

输出结果

Value  Criterion
0    3.0          0
1    3.0          0
2    NaN          1
3    7.0          0
4    2.0          0
5    2.0          0
6    NaN          1
7    NaN          0
8    NaN          0
9    1.0          0

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:06:05