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

如何解决Pandas读取CSV时DataFrame空值被识别为空白的问题

问题描述

有如下格式的CSV文件(字段分隔符为|):

A   B        C    D            E        F
"1"|"6A-7A"|"MFF" ||     "KEY"        |"Y"
"2"|"n/a"  | ""   |"n/a" | "INVENTORY"|"Y"

其中第一行数据的D列单元格值为null。使用以下代码读取文件:

df = pd.read_csv('test.csv', keep_default_na=False, skip_blank_lines=True)

读取后该null值显示为空白,期望该位置显示为NaN,该如何实现?

解决方案

调整pd.read_csv的参数配置即可实现,核心是明确分隔符并指定要识别为NaN的字符串:

  • 必须指定分隔符为|,否则Pandas会用默认的逗号解析,导致读取逻辑错误
  • 通过na_values参数将空白字符串(以及你CSV里的n/a)映射为NaN
  • 开启skipinitialspace忽略字段前后的空格,避免数据带多余空格

修改后的代码如下:

import pandas as pd

df = pd.read_csv(
    'test.csv',
    sep='|',
    skipinitialspace=True,
    na_values=['', 'n/a'],
    keep_default_na=False
)

参数说明

  • sep='|':明确字段分隔符为竖线,这是解决问题的基础
  • skipinitialspace=True:自动去除每个字段开头的空格,比如E列的 "INVENTORY"会被处理为INVENTORY
  • na_values=['', 'n/a']:指定空白字符串和n/a都被识别为NaN,覆盖你CSV里的两种空值场景
  • keep_default_na=False:关闭Pandas默认的NA识别规则,只使用我们自定义的映射,避免冲突

运行上述代码后,第一行D列的空白会被转换成NaN,第二行C列的空字符串、D列的n/a也会被识别为NaN,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:54:31