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

如何使pandas.read_csv区分CSV中的NULL值与空单元格?

区分CSV中的空单元格与"NULL"字符串

这个问题太常见了——pandas默认会把CSV里的空单元格和写为"NULL"的文本一股脑转成NaN,直接抹平了二者的区别。要解决这个问题,核心就是在读取CSV时就修改默认的空值识别规则,让空单元格和"NULL"字符串各自保留原始状态。

步骤1:正确读取CSV文件

读取时我们要做两件事:禁用pandas默认的空值映射逻辑,同时不指定任何额外的空值标记。这样空单元格会保持为空字符串'',而"NULL"会被完整保留为字符串'NULL'。

用这段代码读取你的文件:

import pandas as pd

# 关闭默认空值识别,且不添加额外的空值转换规则
df = pd.read_csv('你的文件路径.csv', keep_default_na=False, na_values=[])

读取完成后,你的DataFrame里Col2列的内容会和原始CSV完全对应:空单元格是空字符串'',写着"NULL"的单元格是字符串'NULL',二者彻底区分开。

步骤2:针对两种值分别处理

现在你可以随心所欲地操作这两种不同的内容了:

  • 查看唯一值:df['Col2'].unique()会返回array(['NULL', 'Virgo', 'Arkenea', ''], dtype=object),清晰展示所有原始值
  • 替换空单元格:df['Col2'] = df['Col2'].replace('', 'EMPTY_CELL')
  • 替换"NULL"文本:df['Col2'] = df['Col2'].replace('NULL', 'EXPLICIT_NULL')
  • 如果只想把"NULL"标记为缺失值(空单元格保留原样),可以用更适合字符串列的缺失值标记:
    df['Col2'] = df['Col2'].replace('NULL', pd.NA)
    

为什么默认会混淆?

pandas默认的na_values参数包含了空字符串、"NULL"、"NaN"、"N/A"等十几种值,读取时会自动把这些内容统一转成NaN,自然就没法区分原始的空单元格和"NULL"文本了。通过设置keep_default_na=False+na_values=[],我们完全关闭了这种自动转换,让CSV的原始内容完整保留下来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:28:56