基于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
相关产品推荐
相关产品推荐

