2

かなり大きなデータセット (2678271, 52) と、マシンのメモリの 6.5% を消費する 5 次元のインデックスがあります。電話すると

df.sortlevel(k)

次のエラーが表示されます。



MemoryError                               Traceback (most recent call last)
 in ()
----> 1 df = df.sortlevel(4)

/usr/local/lib/python2.7/dist-packages/pandas-0.9.1-py2.7-linux-x86_64.egg/pandas/core/frame.pyc in sortlevel(self, level, axis, ascending)
   2978             raise Exception('can only sort by level with a hierarchical index')
   2979 
-> 2980         new_axis, indexer = the_axis.sortlevel(level, ascending=ascending)
   2981 
   2982         if self._data.is_mixed_dtype():

/usr/local/lib/python2.7/dist-packages/pandas-0.9.1-py2.7-linux-x86_64.egg/pandas/core/index.pyc in sortlevel(self, level, ascending)
   1856         indexer = _indexer_from_factorized((primary,) + tuple(labels),
   1857                                            (primshp,) + tuple(shape),
-> 1858                                            compress=False)
   1859         if not ascending:
   1860             indexer = indexer[::-1]

/usr/local/lib/python2.7/dist-packages/pandas-0.9.1-py2.7-linux-x86_64.egg/pandas/core/groupby.pyc in _indexer_from_factorized(labels, shape, compress)
   2124         max_group = np.prod(shape)
   2125 
-> 2126     indexer, _ = lib.groupsort_indexer(comp_ids.astype(np.int64), max_group)
   2127 
   2128     return indexer

/usr/local/lib/python2.7/dist-packages/pandas-0.9.1-py2.7-linux-x86_64.egg/pandas/lib.so in pandas.lib.groupsort_indexer (pandas/src/tseries.c:55052)()

MemoryError: 

このエラーをスローするハードコードされた条件はありますか? または、データが (htop によると) メモリの 6.5% しか使用していない場合でも、操作によって残りのメモリが消費される可能性はありますか?

4

1 に答える 1

2

これを GitHub に移動できますか? コードを確認する必要がありますが、「レベル化された」階層インデックスを深くテストしていないエッジ ケースがいくつかあります。したがって、これはおそらく正当なバグです。

編集: これは v0.10.1 で修正されました

于 2013-01-10T21:27:27.007 に答える