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

使用pandas读取Excel时将'-'解析为NaN未生效,如何修复?

问题修复方案

可能的原因

Excel中的-可能是数值格式下的占位符(比如单元格设置了自定义格式,显示为-但实际值是0),或者pandas默认的NA值规则与你设置的na_values产生了冲突。

解决方案

方案1:读取后直接替换

先正常读取表格,再全局替换-为NaN,兼容性最强:

import pandas as pd
import numpy as np

df = pd.read_excel(excel_file_path, header=0)
df = df.replace('-', np.nan)

如果Excel中的-带有前后空格,用正则匹配替换:

df = df.replace(r'^\s*-\s*$', np.nan, regex=True)

方案2:使用converters参数指定列转换

在读取时针对每一列设置转换函数,精准处理-:

import pandas as pd
import numpy as np

def convert_val(x):
    return np.nan if x == '-' else x

df = pd.read_excel(
    excel_file_path,
    header=0,
    converters={'first': convert_val, 'second': convert_val}
)

方案3:强制指定keep_default_na=False

如果是默认NA值规则干扰,关闭默认NA值并仅指定-为NA:

df = pd.read_excel(
    excel_file_path,
    header=0,
    na_values='-',
    keep_default_na=False
)

额外检查

如果以上方法都无效,打开你的Excel文件检查单元格格式:

  • 选中显示-的单元格,查看单元格格式是否为「数值」类的自定义格式(比如0;-;""),这种情况下单元格实际值是0,需要先将格式改为「文本」再重新输入-,再用上述方法读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:17:35