我是Python的新手。
我尝试使用to_hdf将一个大的数据框以lz4压缩的形式保存到HDF文件中。
我使用的是Windows 10操作系统,Python 3和Pandas 20.2。
出现了“OverflowError: Python int too large to convert to C long”错误。
机器资源(RAM、CPU、SWAP)都没有接近极限。
之前的帖子讨论了dtype,但以下示例显示存在其他问题,可能与大小有关?
import numpy as np
import pandas as pd
# sample dataframe to be saved, pardon my French
n=500*1000*1000
df= pd.DataFrame({'col1':[999999999999999999]*n,
'col2':['aaaaaaaaaaaaaaaaa']*n,
'col3':[999999999999999999]*n,
'col4':['aaaaaaaaaaaaaaaaa']*n,
'col5':[999999999999999999]*n,
'col6':['aaaaaaaaaaaaaaaaa']*n})
# works fine
lim=200*1000*1000
df[:lim].to_hdf('df.h5','table', complib= 'blosc:lz4', mode='w')
# works fine
lim=300*1000*1000
df[:lim].to_hdf('df.h5','table', complib= 'blosc:lz4', mode='w')
# Error
lim=400*1000*1000
df[:lim].to_hdf('df.h5','table', complib= 'blosc:lz4', mode='w')
....
OverflowError: Python int too large to convert to C long
999999999999999999
吗?还是这只是一个糟糕的例子?如果是前者,使用浮点值会损害精度吗? - user707650