使用Pandas解析时避免Excel科学计数法舍入问题

8
我有一个自动生成的Excel文件,其中偶尔会出现非常大的数字,例如 135061808695。在Excel文件中,当您单击单元格时,它会显示完整的数字 135061808695,但是在使用自动“常规”格式时,数字的外观会变为 1.35063E+11
当我在Pandas中使用ExcelFile时,它会拉取科学计数法表示的值1.350618e+11,而不是完整的135061808695。是否有办法让Pandas在不更改Excel文件的情况下获取完整的值?

从API的简要浏览来看,似乎不行,但是,使用您自己的代码将科学计数法转换为普通数字有什么问题吗? - tenwest
2
Pandas 可能已经提取了“完整值”。仅因为它显示 1.35063e+11 并不意味着没有更多的精度存储。使用类似于 15.0f 的格式进行打印以进行检查。 - JohnE
啊... @JohnE 你说得对。实际上,当我往返存储信息时,我才真正失去了精度,尽管早些时候似乎已经失去了。这很容易解决。如果你想在下面写一个快速答案,我会给你信用。 - rhaskett
好的,谢谢,我会做的。 - JohnE
1个回答

7
熊猫(Pandas)很可能已经获取了完整的值,但在默认输出中没有显示出来。
df = pd.DataFrame({ 'x':[135061808695.] })

df.x
0    1.350618e+11  
Name: x, dtype: float64

标准的Python格式:

print "%15.0f" % df.x
135061808695

在Pandas中,将数据转换为整数类型以获得整数格式:

df.x.astype(np.int64)

0    135061808695
Name: x, dtype: int64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接