我得到了一个"内存错误"在Python上尝试对Pandas数据帧进行排序然后将其保存在磁盘上时。
df = pd.read_hdf('big_df_file.h5')
df.sort_values(by='opt',inplace=True,kind='quicksort')
df.to_hdf('sorted.h5')
我的电脑有16 Gbs的RAM,数据文件是8 Gb。我不能没有得到"内存错误" ?
P.S。我正在使用quicksort,因为它是分配较少内存的排序算法。
Versions:
python: 2.7.11.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en_GB
pandas: 0.17.1
答案 0 :(得分:0)
我们需要更多信息,MemoryError在什么阶段被调用?加载了哪种类型的数据?有多少是真的有必要进行排序?
但是我会尝试解决这个问题。
如果在read_hdf期间调用了错误,我建议可能会限制从文件加载的列数,例如,只加载索引列(或按行枚举推断),值列并执行排序。之后,您可以(可能)逐步将新数据写入文件。
更多" Hardcore"方法将是一个分而治之(二进制排序算法,如合并排序),只加载文件的一半(或四分之一,你决定什么效果最好,根据docs这可以通过传递开始和停止参数并执行选择的排序算法(合并排序或外部排序)。
提供了有关一般问题的更多信息