“DataFrame”行的内存效率筛选

2024-10-03 09:13:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的DataFrame对象(1440000000行)。我在内存(交换includet)限制下操作。在

我需要提取具有某个字段值的行的子集。但是如果我真的这样做:

>>> SUBSET = DATA[DATA.field == value]

我以MemoryError异常或崩溃结束。 有没有任何方法可以显式地过滤行而不计算中间掩码(DATA.field == value)?在

我找到了DataFrame.filter()和{a2}方法,但它们对列标签/行索引而不是行数据进行操作。在


Tags: 对象方法内存a2fielddataframedatavalue
2条回答

如果数据帧中的所有数据都是相同类型的,那么就使用numpy数组,这样内存效率更高,速度更快。您可以通过以下方法将数据帧转换为numpy矩阵df.as_矩阵(). 在

另外,您可能需要检查数据帧已经占用了多少内存:

    import sys
    sys.getsizeof()

以字节为单位返回大小。在

使用^{},应该快一点:

df = df.query("field == value")

相关问题 更多 >