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

基于同列前置行条件替换DataFrame的Status列行值

解决方案:基于前一行状态替换DataFrame中的Status值

步骤1:构造示例数据

先还原你提供的原始DataFrame:

import pandas as pd

data = {
    'Power': [1257, 1689, 897, 753, 514, 151, 77, 49, 16, 15, 77, 67, 90, 111],
    'Status': ['Compressor']*6 + ['FanOnly']*2 + ['Controls']*2 + ['FanOnly']*4
}
df = pd.DataFrame(data)

步骤2:核心替换逻辑

利用shift()方法获取前一行的Status值,结合双条件筛选需要替换的行:

# 获取前一行的Status(第一行无前置数据,会显示NaN)
prev_status = df['Status'].shift(1)

# 定义替换条件:当前行是FanOnly,且前一行是Compressor
replace_condition = (df['Status'] == 'FanOnly') & (prev_status == 'Compressor')

# 执行替换
df.loc[replace_condition, 'Status'] = 'Compressor'

验证结果

处理后的DataFrame与你期望的完全一致:

PowerStatus
1257Compressor
1689Compressor
897Compressor
753Compressor
514Compressor
151Compressor
77Compressor
49Compressor
16Controls
15Controls
77FanOnly
67FanOnly
90FanOnly
111FanOnly

补充说明

你之前尝试lag/lead没成功,大概率是没同时满足当前行是FanOnly和前一行是Compressor这两个条件——只单一判断其中一个的话,要么会误替换其他FanOnly行,要么筛选范围不对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:27:21