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

Pandas DataFrame多列差值判断按条件填充列实现方法

原代码缺陷说明
  • 仅计算了宽度维度的差值,遗漏高度、深度两组维度的差值计算逻辑
  • 区间判断逻辑错误:range(0,1)仅生成整数序列[0],无法识别开区间(0,1)内的浮点数值,完全匹配不到符合要求的差值
  • 赋值逻辑错误:循环内直接对整列赋值,会导致所有行被统一填充'Yes',无法实现按行匹配条件、定向填充的效果
  • 遗漏核心判断规则:未校验「三个差值任意一个落在目标区间」的规则,也未校验inf列取值为'T'的前置条件,且赋值列名和需求指定的val列不匹配
正确实现代码

Pandas优先使用向量化运算实现逐行判断,比显式for循环效率更高、逻辑更清晰,可直接复现以下代码:

import pandas as pd

# 计算三组维度差值,判断是否存在任意差值落在开区间(0,1)
cond_dim = (
    (df["new_width"] - df["audited_Width"]).between(0, 1, inclusive="neither")
    | (df["new_height"] - df["audited_Height"]).between(0, 1, inclusive="neither")
    | (df["new_depth"] - df["audited_Depth"]).between(0, 1, inclusive="neither")
)
# 判断inf列是否为'T'
cond_inf = df["inf"] == "T"

# 初始化val列为空,两个条件同时满足时填充'YES'
df["val"] = ""
df.loc[cond_dim & cond_inf, "val"] = "YES"

# 打印val列校验结果
print(df["val"])
代码说明
  • between(0, 1, inclusive="neither")是Pandas内置的开区间判断方法,等价于x>0 & x<1,写法更简洁不易出错
  • 位运算符|表示“或”逻辑,即三个差值只要有一个符合区间要求就满足维度条件
  • df.loc[行筛选条件, 列名]可以精准定位符合条件的行,仅对目标位置赋值,不会出现整列被覆盖的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:06:56