Python中Pandas DataFrame NaN值条件判断输出异常问题求解
问题原因
- 错误将
NaN作为字符串处理:Pandas中的空值NaN是numpy定义的浮点类特殊标记,并非字符串,因此用它和'NaN'、'nan'两个字符串做不等比较的结果永远为True。 - 逻辑运算符选型错误:你使用了
or逻辑,只要任意一个条件成立就会进入打印分支,即便后续遇到字符串格式的空值,只要不同时等于两个测试字符串,判断结果依然为真,永远会触发打印。 - 空值判断逻辑不符合
NaN特性:即便你直接和数值NaN比较,也不能用==或!=直接判断,NaN的核心特性是和任何值(包括自身)的相等比较都返回False,直接比较无法正确识别空值。
解决方法
直接用Pandas内置的pd.notna()函数判断sma值是否为非空,该函数可以兼容识别NaN、NaT等各类Pandas体系下的空值,优化后代码如下:
import pandas as pd # 取sr=1对应的sma值,避免链式索引更安全 target_sma = df.loc[df['sr'] == 1, 'sma'].iloc[0] if pd.notna(target_sma): print(target_sma)
内容的提问来源于stack exchange,提问作者selet
相关产品推荐
相关产品推荐

