Pandas Style显示Timestamp值意外向上取整的原因咨询
Pandas Style展示超大Timestamp值时的精度偏差原因
核心问题:浮点数精度上限
你输入的1623838447949609899是一个19位的超大整数,而float64(Pandas默认数值存储类型之一)的有效精度仅为53位二进制,对应十进制约15-17位。当整数超过2^53(即9007199254740992)时,float64无法精确存储该数值,会自动将其近似为最接近的可表示浮点数。
你的输入远大于2^53,因此1623838447949609899被近似为1623838447949609984——这是float64能精准表示的、最接近原数的数值。
Pandas 1.4.2 Style的渲染逻辑
在Pandas 1.4.2的style模块渲染DataFrame时,未指定格式的数值列会默认以浮点数处理后转字符串展示。即使原始数据存储为int64(能容纳该超大整数),但style渲染过程中发生了隐式类型转换,将数值转为float64,导致近似值被显示。
验证与修复方法
- 验证:在Notebook中执行
float(1623838447949609899),会得到1.6238384479496099e+18,转为整数就是你看到的1623838447949609984。 - 修复:若要精确展示该数值,需将列转为字符串类型后再渲染:
df['timestamp'] = df['timestamp'].astype(str) df.style
内容的提问来源于stack exchange,提问作者Max Wong
相关产品推荐
相关产品推荐

