【发布时间】:2016-08-25 18:36:27
【问题描述】:
我有一个 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,没有任何子节点。
【问题讨论】:
-
你能贴出整段代码吗,因为不是很清楚。你说
nodes是什么意思?the second half是什么?如果您指定一个样本数据集(5-7 行),这也会很有帮助 -
下半场,我的意思是我不知道如何满足如果一个节点在我的最终集合中,其父节点不在的条件。我希望我的编辑能进一步澄清我的情况
-
基本上,我试图找到权重低于阈值的第一个节点
-
对于节点
111——如何区分是1+11还是11+1? -
每个节点正好有 3 个子节点,每个子节点分别命名为 1、2、3