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

使用列表推导式比较pandas DataFrame同行列r1与r2的值并修复全返回yellow问题

问题原因

numpy.nan参与任意数值比较运算的结果都为False,因此你原代码中的判断条件永远不触发red分支,所有行都返回yellow。

列表推导式修改方案

仅需要在判断条件中新增非空校验,确保两个值都为有效值时再做大小比较即可,修改后的代码如下:

import pandas as pd
import numpy as np
from numpy import nan 
time_idx = pd.date_range('2021-01-05', periods=8, freq='3H')
r1 = np.concatenate([[nan,nan,nan],235,324,125,[nan,nan]], axis=None)
r2 = np.concatenate([114,nan,345,235,nan,125,178,324], axis=None)
df_r = pd.DataFrame({'r1': r1,'r2':r2},index =  time_idx) 
# 修改列表推导式的判断条件
df_r["Light"]=['red' if pd.notna(df_r.loc[t,'r1']) and pd.notna(df_r.loc[t,'r2']) and df_r.loc[t,'r1'] > df_r.loc[t,'r2']
                  else 'yellow' for t in df_r.index]
print(df_r)

你提供的测试用例中不存在r1、r2均为有效值且r1 > r2的场景,因此测试运行后Light列仍全为yellow,可自行调整测试数据验证逻辑正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:45:00