python - 内存不足过滤 Pandas 中的 HDF5 表

标签 python pandas filtering

我有一个 4+ Gb HDF5 表,其中的行对应于树状结构中的节点。有 3 个显着列:name , surname , weight . Surname 记录给定节点的父节点的名称,name 是当前节点的名称(相对于父节点),weight 是节点的权重。 name和surname都是字符串,surname+name构成了这个节点的唯一标识。最后,对于任何给定的节点,其子节点的权重严格小于自身的权重。

我的问题是我想过滤这个表以找到所有权重小于给定阈值 M 的节点,但是如果一个节点存在于我的最终集合中,它的父节点不应该在集合中。

我用过pd.read_hdf(,where = ['weight < M'])让所有权重满足我条件的节点都少,但我不知道如何满足后半部分。这也需要在内存不足的情况下完成,因为表格本身非常庞大。

编辑:我以前从未在这里问过问题,所以如果您需要更清楚的信息,请询问

更新:这是表格的示例。

surname    name    weight
1          1       0.016496
1          2       0.004884
1          3       0.004691

澄清我所说的 nodes 的意思,假设每一行代表下图中较低的 3 个节点的属性:

       1  
  /    |     \  
11     12     13  
...    ...    ...

例如,节点 12 是通过采用其父节点 (1) 的名称并连接其位置 (2) 来命名的
节点 11、12 和 13 各有 3 个节点作为其子节点,其权重严格小于各自的父节点。如果我设置权重阈值 M = 0.0165,我想返回节点 11、12 和 13,而不返回它们的任何子节点。

最佳答案

如果您正在寻找类似 pandas 的语法并且您没有核心要求,您将需要 Blaze 之类的东西来控制它。 The documentation说它可以在并行处理部分处理 HDF5 文件。

但是您关于要用它做什么的问题并不清楚。如果必须,请给出数据输入和输出的示例。

关于python - 内存不足过滤 Pandas 中的 HDF5 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36957996/

相关文章:

python - 使用 NLTK 在不完整的句子中查找主题

python - 使用整数和 numpy 标量索引 numpy 数组时有什么区别?

python-3.x - pandas 自定义排序多级索引

python - 如何迭代 pandas 数据帧行,查找字符串并分成列?

laravel - 如何使用Eloquent过滤数据透视表?

python - BeautifulSoup - 如何获得美丽汤中的第二个下一个项目?

python - Pandas 分配回使用 notnull() 过滤的系列

python - 如何保持时间戳的毫秒分量,即使它的值为零?

oracle - PostgreSQL 和过滤递归查询

matlab - 高通滤波器方程?