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

Python读取Excel长数字时保留实际值问题求助

问题

我用Python脚本读取Excel导出的CSV文件提取数据,其中一列Steel Location存储钢杆ID。因为ID是长数字,Excel会自动用带+号的科学计数法显示,用Python的pandas读取后也保留了这种格式,我需要输出完整的实际ID数值。

当前使用的代码:

import pandas as pd

file_path = "Steel Signs - ElevationData.csv"

df = pd.read_csv(file_path)

for [key, value] in df.to_dict().items():
    print(value)
解决方案

方法1:读取时指定列类型为字符串(推荐)

读取CSV时直接将Steel Location列强制设为字符串类型,从根源避免pandas自动将长数字解析为科学计数法格式的数值:

import pandas as pd

file_path = "Steel Signs - ElevationData.csv"
# 指定目标列的数据类型为字符串
df = pd.read_csv(file_path, dtype={"Steel Location": str})

# 遍历并输出该列的完整ID
for id_val in df["Steel Location"]:
    print(id_val)

方法2:转换已读取的数值列

如果已经完成文件读取,可通过字符串格式化将科学计数法的数值转换为完整ID字符串:

# 对已读取的Steel Location列进行转换
df["Steel Location"] = df["Steel Location"].apply(
    lambda x: "{:.0f}".format(x) if pd.notna(x) else x
)

# 输出完整ID列表
print(df["Steel Location"].tolist())

⚠️ 注意:如果原长数字因科学计数法丢失了精度(超出float类型的精度范围),此方法可能无法恢复完整ID,优先使用方法1。

方法3:全局禁用科学计数法显示

通过pandas全局设置关闭所有数值列的科学计数法显示,适用于需要处理多列长数字的场景:

import pandas as pd

# 全局设置:数值类型以整数格式显示(无科学计数法)
pd.set_option('display.float_format', lambda x: '{:.0f}'.format(x) if isinstance(x, float) else x)

file_path = "Steel Signs - ElevationData.csv"
df = pd.read_csv(file_path)

# 输出目标列
print(df["Steel Location"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:22:16