【问题标题】:Memory Error: Masking not so big dataframe throwing error内存错误:屏蔽不太大的数据帧抛出错误
【发布时间】:2018-03-19 17:16:10
【问题描述】:

尝试使用掩码为具有 3 列的 4M 行表选择值时出现内存错误。

当我运行df.memory_usage().sum() 时,它返回给我173526080,相当于1,38820864 gb,我有32gb 的RAM。所以看起来它不应该用完 RAM,因为没有以前的代码消耗大量 RAM。

此方法适用于具有相同 4M 行的以前版本的代码。

我运行的代码是:

x = df[exit_point] > 0
print(df[x].shape)

我得到的错误是:

  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 2133, in __getitem__
    return self._getitem_array(key)
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 2175, in _getitem_array
    return self._take(indexer, axis=0, convert=False)
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 2143, in _take
    self._consolidate_inplace()
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 3677, in _consolidate_inplace
    self._protect_consolidate(f)
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 3666, in _protect_consolidate
    result = f()
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 3675, in f
    self._data = self._data.consolidate()
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 3826, in consolidate
    bm._consolidate_inplace()
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 3831, in _consolidate_inplace
    self.blocks = tuple(_consolidate(self.blocks))
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 4853, in _consolidate
    _can_consolidate=_can_consolidate)
  File "C:\Users\joaoa\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 4876, in _merge_blocks
    new_values = new_values[argsort]
MemoryError

我不知道如何开始调试它。任何线索和提示将不胜感激。

【问题讨论】:

  • 尝试做块可能

标签: python pandas dataframe memory


【解决方案1】:

也许这会有所帮助:

[1] 导入文件时使用 low_memory=False 参数。例如:

df = pd.read_csv('filepath', low_memory=False)

[2] 在导入文件时使用 dtype 参数。

[3] 如果您使用 Jupyter Notebook:内核 > 重新启动并清除输出。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多