Python:如何将Pandas数据帧中的大数字存储为int64或float64



类似于这个问题,在Python中存储超过9000位的大数字,我感兴趣的是在Pandas数据帧中存储大数字,其中dtypeint64float64,但不是对象。我已经尝试过了,但当我初始化数据帧或转换为int64float64:OverflowError: int too large to convert to float时,我总是收到这个错误。

以下是一些引发错误的示例代码:

data = [[4041067959774462618542251414053149763363284932506803841495981726909361589243016772093539952215008166854586458807896667612935940650616044271694578570770218354465319095565165551049760172710391683826002499005236096882016133967285292291606248423125012884140175919816849209382612886503119619750800600507246127268611380063066868139796774976684606993289391743637218529185641004454047725507720821393787669169611972814982330545723200072965546061194948505665350431588541107227045045135059495789131566496560507159916524037246652355679704655191235607257759392890459293292994869676442294348205840960197717998950931099935125824565443461965027936602550759188464075684122645652374411071687652948467619565381434911645676757024253483187841007912001722045733971195432548620690744725086837979031567344095323422174671522835282126126173748501439121944882602887928671532521816234961981946544118773557395130950306137831226533275921950157923776845085190156444450216692581322726107832236483226314003339464513548213142271415371910246088829012370639200542888385733241823213915919885883384151357374501359157931301139416090907994970949429195483607826525457136853740508614341446335314912887887891647364907817033609726890368372485038664354107037004105702300397408085198993506316238517085901918870189631204393632008524269869979074462426748217010716364884706958521730228474069227641283826703864839419845872269299777537, 10], [2, 15], [3, 14]]

df = pd.DataFrame(data, columns = ['code1', 'code2'])
---------------------------------------------------------------------------
OverflowError                             Traceback (most recent call last)
...
OverflowError: int too large to convert to float

很明显,您可以将数组强制转换为np.array,但请注意,这会强制dtype为对象,而不是int64float64

使用numpy.asarray()方法以数组格式使用数据。下面是这个问题的解决方案代码,

import numpy as np 
import pandas as pd 
data = [[4041067959774462618542251414053149763363284932506803841495981726909361589243016772093539952215008166854586458807896667612935940650616044271694578570770218354465319095565165551049760172710391683826002499005236096882016133967285292291606248423125012884140175919816849209382612886503119619750800600507246127268611380063066868139796774976684606993289391743637218529185641004454047725507720821393787669169611972814982330545723200072965546061194948505665350431588541107227045045135059495789131566496560507159916524037246652355679704655191235607257759392890459293292994869676442294348205840960197717998950931099935125824565443461965027936602550759188464075684122645652374411071687652948467619565381434911645676757024253483187841007912001722045733971195432548620690744725086837979031567344095323422174671522835282126126173748501439121944882602887928671532521816234961981946544118773557395130950306137831226533275921950157923776845085190156444450216692581322726107832236483226314003339464513548213142271415371910246088829012370639200542888385733241823213915919885883384151357374501359157931301139416090907994970949429195483607826525457136853740508614341446335314912887887891647364907817033609726890368372485038664354107037004105702300397408085198993506316238517085901918870189631204393632008524269869979074462426748217010716364884706958521730228474069227641283826703864839419845872269299777537, 10], [2, 15], [3, 14]]
data_array = np.asarray(data) 
df = pd.DataFrame(
data_array, 
columns=['code1', 'code2']
)
print(df['code1'][0])

最新更新