在 Python 中将 DataFrame 视图存储为类属性时避免内存重复

问题描述 投票:0回答:1

我正在使用大型 Pandas DataFrame 并使用 进行rolling window时间序列交叉验证。在每次迭代期间,我根据不同的日期范围将 DataFrame 拆分为三个单独的数据集。由于内存限制,我希望这三个数据集都是原始 DataFrame 的视图/引用,而不是内存密集型副本。

我遇到过各种 pandas 函数(例如使用

iloc
),它们假设创建 DataFrame 的视图。当我尝试将这些视图存储为类的属性或命名元组的字段时,我的挑战就出现了。根据我的理解,在某些情况下,Python 可能最终会将 DataFrame 的副本存储为属性,这可能会加剧我的内存问题。

  1. 解决这个问题的最佳实践是什么?
  2. 将 pandas DataFrame 分配给类属性时,如何确保 Python 使用 视图并且不为新副本分配内存?
python pandas class memory-management reference
1个回答
1
投票

就 Python 将对象存储为属性时的行为而言,Python 本身不控制 DataFrame 是存储为视图还是副本。该行为取决于 Pandas 的实现和您执行的操作。将通过 .iloc 获得的 DataFrame 切片存储为属性通常应该会产生内存高效的视图。

© www.soinside.com 2019 - 2024. All rights reserved.