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

如何在Python中使用Pandas将数值以指数形式保存到CSV文件

如何在Python中使用Pandas将数值以指数形式保存到CSV文件

我明白你的困扰——明明控制台打印时数值是指数形式,存成CSV后就变回普通浮点数了对吧?问题出在你用的几个方法其实没真正控制写入CSV的格式,我来给你拆解问题,再给你修正后的代码。

首先,你用的pd.set_option('display.float_format', '{:.1E}'.format)只控制控制台的显示效果,完全不影响Pandas写入CSV时的数值格式,所以这步对存文件没用。另外你那行Datas_2 = Datas.astype(float, '{:.1E}'.format)的用法也是错的,astype()的第二个参数不是格式字符串,这个操作根本不会把数值转成指数格式。

要让CSV文件里真正保存指数形式的数值,核心是把浮点数列转换成带指数格式的字符串——因为CSV本质是纯文本文件,只有当你把数值以字符串的形式写入,才能完全控制它的显示格式,而不是让Pandas自动用默认的浮点数格式输出。

修正后的代码如下,我保留了你原来的逻辑,只改关键部分:

import pandas as pd

# 读取Excel数据
Datas = pd.read_excel(Dateiname_Excel, sheet_name="Tabelle1", header=0)

# 先处理"Pos"列转整数(和你原来的逻辑一致)
Datas["Pos"] = Datas["Pos"].astype(int)

# 筛选出所有浮点类型的列,把它们格式化为1位小数的指数形式字符串
float_columns = Datas.select_dtypes(include=['float64', 'float32']).columns
Datas[float_columns] = Datas[float_columns].applymap(lambda x: '{:.1E}'.format(x))

# 写入CSV文件,这里不需要手动关闭文件,Pandas会自动处理
Datas.to_csv(Dateiname_CSV, index=None, header=HeaderList)

# 打印确认结果
print(Datas)

给你解释下关键步骤:

  • 用select_dtypes自动筛选出所有浮点数列,避免手动写列名的麻烦;
  • applymap(lambda x: '{:.1E}'.format(x))把每个浮点数转换成X.XE±XX格式的字符串;
  • 去掉了你多余的CSV_File.close(),因为to_csv方法会自动管理文件的打开和关闭,手动关闭反而可能出错。

这样处理后,你打开CSV文件就能看到数值都是指数形式了,和你控制台打印的效果一致。

备注:内容来源于stack exchange,提问作者Fivomat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:34:30