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
相关产品推荐
相关产品推荐

