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

Python pandas读取csv时如何区分空白值与缺失值

解决pandas读取CSV时无法区分空白值与缺失字段的方法

核心原理是调整read_csv默认会将空字符串和字段缺失都识别为NaN,要区分二者可以通过参数调整,保留空字符串为独立标识,仅自动补全的缺失字段标记为NaN。


方法1:直接调整读取参数

如果不需要额外空值仅需要区分空字段和缺失字段,不需要识别NA、`NULL这类默认空值的识别能力,可以直接使用如下代码:

import pandas as pd
# 关闭默认将空字符串转换为NaN的规则,仅字段数不足补的内容为NaN
df = pd.read_csv('test1.csv', keep_default_na=False)

读取后的结果如下:

col1 col2 col3                       col4
0    10    a  111             hzlvkhaslkdvhs
1    20    b  345  ioadjf ogjdasoivj adoijf 
2    30    c                             NaN
3    40    d  987            ;vjsdf;vm smgv 
4    50    e             vbiodhfo vdofhb od

此时可以直接通过规则区分两种情况:

  • 列值为空字符串''的就是你所说的有效空白值,用df['col3'] == ''即可筛选
  • 列值为NaN的就是字段缺失的内容,用df.isna()即可筛选

方法2:保留其他默认空值识别能力

如果你需要保留pandas对其他默认空值(比如NA、NULL、NaN等)的识别能力,仅排除空字符串的自动转换,可以自定义na_values参数:

# 复制pandas默认空值列表,移除空字符串
custom_na = ['#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan',
            '1.#IND', '1.#QNAN', '<NA>', 'N/A', 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null']
df = pd.read_csv('test1.csv', keep_default_na=False, na_values=custom_na)

可选:直观标记空白值

如果想要更清晰区分空白值和其他内容,可以将空字符串替换为自定义标识:

df.replace('', '[空白值]', inplace=True)

替换后你可以直观看到:

  • col1=30的行col3为[空白值],col4为NaN
  • col1=50的行col3为[空白值],col4为正常内容
    两种情况完全区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:06:06