如何正确判断DataFrame列中非NaN值并打印(支持负数值场景)
正确判断DataFrame列中非NaN值的方法
为什么你的尝试无效?
j != np.nan不生效:因为NaN的特性是任何与NaN的比较(包括等于或不等于自身)都会返回False,所以这个判断永远为True,导致NaN被错误打印。j != None不生效:pandas的浮数列中,缺失值存储的是np.nan而非None,所以这个判断无法识别NaN。
正确的判断方式
方法1:使用pandas原生的pd.notna()(推荐)
这是pandas专门用于检测非缺失值的函数,兼容所有数据类型:
import pandas as pd # 遍历列并打印非NaN值 for j in df['交易金额']: if pd.notna(j): print(j)
方法2:使用numpy的np.isnan()取反
针对浮点数类型的列,可以用numpy的函数判断,再取反:
import numpy as np for j in df['交易金额']: if not np.isnan(j): print(j)
更高效的pandas操作(无需手动维护迭代次数)
其实不需要手动遍历并判断,pandas可以直接过滤非NaN值后处理,更简洁高效:
# 直接遍历过滤后的非NaN值 for val in df['交易金额'].dropna(): print(val) # 或者直接打印整个非NaN序列 print(df['交易金额'].dropna())
内容的提问来源于stack exchange,提问作者wihee
相关产品推荐
相关产品推荐

