从pandas中的DataFrame.sortlevel获取MemoryError

时间:2012-08-16 12:36:11

标签: pandas

我正在尝试使用MultiIndex(3级)和大约900'000x4的DataFrame运行sortlevel(0,0)。

>>>data.as_matrix().shape
(899262, 4)
>>>data.sortlevel(0,0) #<--- throws MemoryError almost instantaneous

我正在运行Windows Vista(不甘心),据我所知,一个进程只能分配大约2GB的RAM,但我看不出.sortlevel如何真正使用这么多的RAM?什么算法用于排序?是否有任何走路以同样的方式对其进行排序?

编辑只是按旧习惯在ipython中进行测试。

3 个答案:

答案 0 :(得分:1)

ipython 中使用run filename.py似乎是一个问题,它出于某种原因在命令提示符下使用了比普通 python 更多的RAM。

答案 1 :(得分:0)

在一些地方,当涉及MultiIndex时,大熊猫并不像关于内存使用一样小心 - 如果你找到一个重现问题的案例,请将其发布在问题跟踪器上。

答案 2 :(得分:0)

当从IPython运行模块时,我遇到了排序大型DataFrame的相同MemoryError问题。

如果你有一个64位处理器,操作系统和超过2GB的RAM另一个解决方案就是运行64位Python,你可以获得一个预打包的64位版本的Python,如Anaconda Community Editionget the unofficial 64 binaries