gpt4 book ai didi

python在excel中读取大整数

转载 作者:行者123 更新时间:2023-12-04 20:50:12 24 4
gpt4 key购买 nike

我有一个具有以下 3 个大整数的 excel(实际上,它们是 id)。
但是在excel中它将以科学模式存储。
当我使用 pandas 读取 excel 时,我会失去精度,因为整数太大,int64 无法存储它。
示例数据:(1.xlsx)
76307016609101000000000000000000
86412903902869300000000000000000
35575701294198100000000000000000

A = pd.read_excel("1.xlsx", engine="openpyxl", header=None, dtype=np.float64) 
% no matter what the dtype is the result will be wrong

print(int(A.loc[0])) # 76307016609101001211632066494464 wrong
我不知道是否有一种比 int64 长并且由 numpy/pandas 支持的 int 类型。非常感谢!!

最佳答案

如果您可以让 excel 吐出原始数字,那么您可以通过将数字读取为文本来解决此问题

import pandas as pd 
import io

txt='''\
line,Num,text
1,12345678901234435346789012345678901234567890,"large"
2,66464644666669999999999999999999999999999999999999999999999999999999999999991,"larger"
3,1,"unity"
4,-9999999999999999999999999999999999999999,"larger in a different way"
'''

df=pd.read_csv(io.StringIO(txt), converters={'Num':int})

print(df)
结果是
   line                                                Num  \
0 1 12345678901234435346789012345678901234567890
1 2 6646464466666999999999999999999999999999999999...
2 3 1
3 4 -9999999999999999999999999999999999999999

text
0 large
1 larger
2 unity
3 larger in a different way
你仍然可以对它们进行求和
n=df["Num"][1]
print (n,n+1 )
产量
66464644666669999999999999999999999999999999999999999999999999999999999999991 
66464644666669999999999999999999999999999999999999999999999999999999999999992

关于python在excel中读取大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65991118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com