我有一个大约16GB的原始SAS文件,即使保留了与我的问题相关的列,文件大小也大约为8GB。看起来是这样的:
CUST_ID FIELD_1 FIELD_2 FIELD_3 ... FIELD_7
1 65 786 ABC Y
2 87 785 GHI N
3 88 877 YUI Y
...
9999999 92 767 XYS Y
当我尝试使用以下代码将其导入Python时:
df=pd.read_sas(path,format='SAS7BDAT')
我的屏幕变黑了,在多次尝试之后,我终于得到了错误MemoryError
。
因为我的问题需要整个CUST_ID
集合,所以只选择一个样本并删除其他行是不可能的
我想也许我可以将整个文件拆分成多个子文件,这样我就可以执行所有需要的计算,然后在完成所有必要的工作后,最终将这些文件合并成一个大文件
有没有办法解决这个问题?我真的很感激我能得到的所有帮助
编辑:
我试过这个
chunk_list=[]
for chunk in df_chunk
chunk_filter=chunk
chunk_list.append(chunk_filter)
df_concat=pd.concat(chunk_list)
但我还是得到了Memory Error
。有什么帮助吗
在进行处理之前,将迭代器标志设置为true并在循环中拆分文件
参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sas.html
或在执行输出之前在SAS中拆分文件
我认为你正在尝试的是:
您可以尝试压缩循环内的数据,因为否则在合并时它将再次失败:
参考:https://pythonspeed.com/articles/pandas-load-less-data/
对于
read_sas
有一个chunksize
参数,它应该允许您将大文件分解成更小的部分,以便能够读入chunksize
是一次要读取的记录数相关问题 更多 >
编程相关推荐