在Jupyter Notebook中用Pandas过滤DataFrame的NaN值遇到问题
解决Pandas过滤「Artikelnr.」列NaN值的问题
情况1:列中是真正的Pandas缺失值(np.nan)
你之前用df['Artikelnr.'] == 'NaN'的错误在于,Pandas里的缺失值是特殊的浮点类型np.nan,不是字符串'NaN',直接用等于判断根本匹配不到。正确写法是使用isnull()或isna()(两者功能完全一致):
empty_art = df.loc[df['Artikelnr.'].isnull()] # 也可以用更简洁的写法 empty_art = df[df['Artikelnr.'].isnull()]
情况2:列中是字符串形式的'NaN'
如果isnull()没生效,大概率是你的「Artikelnr.」列里的空值其实是字符串'NaN'(比如导入数据时系统没自动识别为缺失值),这时候直接匹配字符串即可:
empty_art = df.loc[df['Artikelnr.'] == 'NaN'] # 要是存在空格或大小写差异,还可以做预处理 empty_art = df.loc[df['Artikelnr.'].str.strip().str.lower() == 'nan']
额外建议:先确认空值类型
可以先查看列的类型和唯一值,搞清楚到底是哪种空值:
# 查看列的数据类型 print(df['Artikelnr.'].dtype) # 查看列的所有唯一值(包括空值) print(df['Artikelnr.'].unique())
如果输出里有nan(不带引号),说明是真正的缺失值;如果有'NaN'(带引号),说明是字符串类型的空标记。
内容的提问来源于stack exchange,提问作者Neuquert
相关产品推荐
相关产品推荐

