pandas解决excel科学计数法问题

陆遥
陆遥
发布时间:2026-10-16| 6人浏览过
原创

本文介绍pandas处理Excel中超过14位数字自动转换为科学计数法的问题。提供两种解决方案:数据量小时使用to_csv替代to_excel;通用方法是在read_excel时指定dtype=str将所有数据读为字符串。此外,还讨论了将特定字段转为int类型时需先处理空值的注意事项,以避免转换错误。

pandas解决excel科学计数法问题

Excel默认会将超过14位的数字转换为科学计数法格式,且其后的数字会被截断为0。

在使用pandas进行表格合并或生成新表时,这是一个常见且令人头疼的问题。

经测试,以下两种方法有效:

1、若数据量较小,可将to_excel替换为to_csv。CSV格式对数据的包容性较强,但当数据量庞大时,可能会遇到文件无法打开的情况。

2、通用解决方案,在read_excel时:

df = pd.read_excel("filepath", dtype=str)

将所有数据统一设置为字符串类型(str),从而避免数字类型的自动转换问题。

但需要注意以下几点:

df = df.infer_objects()
"""
"""
df.to_excel("filepath", index=False, encoding="utf-8")

pandas替换科学计数法数字

在使用Pandas读取数据时,发现工单编号、电话号码等字段被记录为科学计数法。通过观察发现,当电话号码类型为float时采用科学计数法,而int类型则不会。因此,尝试将电话号码转换为int类型(在Excel中将电话号码转换为字符串类型并未解决问题)。

首先,需要将空值转换为数值,此处将其转换为-1(这里将data的所有字段都填充为-1)。

data = data.fillna(-1)

将电话号码字段转换为int类型(此处将所有需要int类型的数字都进行了转换。注意:如果含有空值,会报错不能将NA转化为Integer)。

data[['联系电话','关联工单','处理人员','处理满意度']].astype('int64')

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。