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

如何避免Python/Pandas将长ID识别为数值类型

解决Pandas读取CSV长数字ID的类型问题

核心可行方案:读取阶段直接指定列类型为字符串

在使用pd.read_csv()读取CSV时,通过dtype参数强制指定ID列的类型为字符串,从根源避免数值类型转换带来的科学计数法、精度丢失问题。

具体代码示例

  • 如果CSV有列名,且ID列名为id:
import pandas as pd

df = pd.read_csv('your_data.csv', dtype={'id': str})
  • 如果CSV无列名,且ID是第一列:
df = pd.read_csv('your_data.csv', dtype={0: str})

为什么之前的方法无效?

  • 转int/int64:int64的最大精确整数范围是2^53-1(约9×10¹⁵),你的18位ID超出了这个范围,必然导致精度丢失、数值被四舍五入。
  • float_precision='round_trip':本质还是以浮点类型存储数据,无法解决大整数的精度上限问题。
  • 事后转字符串:此时ID已经被Pandas转成了精度丢失的浮点值,转字符串也无法恢复原始完整ID。
  • 设置显示格式:仅改变数值的显示样式,底层存储依然是浮点型,精度问题并未解决。

验证方法

读取后可以检查列类型和值,确认效果:

print(df['id'].dtype)  # 输出应为object(Pandas中字符串类型以object存储)
print(df['id'].iloc[0])  # 输出原始完整的长数字ID,无科学计数法和精度丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:27:18