内存高效过滤`DataFrame`行

时间:2017-06-08 13:41:17

标签: python python-2.7 python-3.x pandas

我有一个大withText()个对象(1,440,000,000行)。我在内存(交换包含)限制下运行。

我需要提取具有特定字段值的行的子集。但是,如果我喜欢这样:

DataFrame

我以>>> SUBSET = DATA[DATA.field == value] 异常或崩溃结束。 有没有办法明确地过滤行 - 不计算中间掩码(MemoryError)?

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

2 个答案:

答案 0 :(得分:4)

使用query,它应该更快一点:

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

答案 1 :(得分:0)

如果通过任何更改,DataFrame中的所有数据都是相同的类型,请使用numpy数组,它的内存效率更高,速度更快。您可以通过df.as_matrix()将数据帧转换为numpy矩阵。

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

    import sys
    sys.getsizeof()

以字节为单位返回大小。