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

如何用Pandas read_excel避免空单元格使列变为浮点数?

解决Pandas读取含空单元格的Excel列时导出CSV显示1.0而非1的问题

问题核心原因是:当Excel列中存在空单元格时,Pandas会将空值识别为NaN,而标准整数类型(int)无法存储NaN,因此Pandas会自动将整列转换为浮点型(float64),导致导出CSV时整数显示为1.0而非1。

以下是几种可行的解决方法:

方法1:读取时指定支持缺失值的整数类型

使用Pandas的nullable整数类型(Int64,注意大写的I),它允许列中同时存在整数和NaN,不会自动转为浮点型:

import pandas as pd
# 替换为你的Excel文件路径和目标列名
df = pd.read_excel("your_file.xlsx", dtype={"目标列名称": "Int64"})
# 导出CSV,index=False避免生成索引列
df.to_csv("output.csv", index=False)

这种方式下,整数会保持1的格式,空单元格导出后显示为空(而非NaN),符合预期。

方法2:读取后转换列类型

如果不确定需要处理的列名,或者需要批量处理多列,可以在读取后将目标列转换为Int64类型:

import pandas as pd
df = pd.read_excel("your_file.xlsx")
# 替换为你需要处理的列名列表
target_cols = ["列1", "列2", "列3"]
df[target_cols] = df[target_cols].astype("Int64")
df.to_csv("output.csv", index=False)

方法3:禁用空值过滤(慎用)

通过na_filter=False参数,让Pandas将空单元格识别为空字符串而非NaN,这样列类型会变为object,整数不会被转为浮点型:

import pandas as pd
df = pd.read_excel("your_file.xlsx", na_filter=False)
df.to_csv("output.csv", index=False)

⚠️ 注意:这种方法会将所有空值(包括真正的缺失值)都转为空字符串,可能会影响后续的数据处理,仅在确认Excel中的空单元格都是无意义的空白时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:51:53