![](/img/trans.png)
[英]Applying function to pandas dataframe: is there a more memory-efficient way of doing this?
[英]Memory-efficient filtering of `DataFrame` rows
我有一个大的DataFrame
对象(1,440,000,000行)。 我在内存(交换包含)限制下运行。
我需要提取具有某个字段值的行的子集。 但是,如果我这样做:
>>> SUBSET = DATA[DATA.field == value]
我以MemoryError
异常或崩溃结束。 有什么方法可以显式过滤行-无需计算中间掩码( DATA.field == value
)?
我已经找到了DataFrame.filter()和DataFrame.select()方法,但是它们对列标签/行索引而不是行数据进行操作。
使用query
,它应该快一点:
df = df.query("field == value")
如果通过任何更改,DataFrame中的所有数据都是相同的类型,请改用numpy数组,这样可以提高内存效率和速度。 您可以通过df.as_matrix()将数据框转换为numpy矩阵。
另外,您可能想通过以下方式检查数据帧已占用的内存量:
import sys
sys.getsizeof()
返回以字节为单位的大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.