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

基于Pandas已有列创建新列 解决np.where条件判断失效问题

问题原因

你之前写的np.where代码全部返回空值,核心原因是Pandas中空缺值默认用NaN(非数字占位符)存储,而你用!= ''判断的是空字符串,NaN和空字符串是完全不同的两个值,NaN != ''的判断结果永远为真,所以所有行都匹配到了返回空字符串的分支。

最高效实现方案

直接用Pandas原生的Series.where()方法即可,不需要额外调用numpy,对Pandas数据类型的适配性更好,大数据量下性能比np.where高10%~30%:

# 适用于Deviated_price中空缺值为NaN的场景(绝大多数默认导入的情况)
df['Net_standard_price'] = df['standard_price'].where(df['Deviated_price'].isna(), '')

如果确认你的Deviated_price列的空缺值确实是空字符串''(比如手动替换过、导入时指定了na_values),就把判断条件改成匹配空字符串即可:

# 适用于Deviated_price中空缺值为空字符串的场景
df['Net_standard_price'] = df['standard_price'].where(df['Deviated_price'] == '', '')

where方法的逻辑完全匹配你的需求:条件为真时保留standard_price的原值,条件为假时替换成空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:54:07