私はツリー状の構造のノードに対応する行を持つ4+ Gb HDF5テーブルを持っています。 3つの顕著な列:name
,surname
,weight
があります。 Surnameは、指定されたノードの親の名前をログに記録します.nameは現在のノードの名前(親との相対的な名前)で、weightはノードの重みです。名前と姓は両方とも文字列であり、姓+名前はこのノードの一意の識別子です。最後に、任意のノードについて、その子の重みは自らの重みよりも厳密に小さい。パンダでHDF5テーブルをフィルタリングしているメモリが不足しています
私の問題は、重みが所定のしきい値Mより小さいすべてのノードを見つけるためにこのテーブルをフィルタリングしたいが、ノードが最終セットに存在する場合、その親はセット内にあってはならないということです。
私はpd.read_hdf(,where = ['weight < M'])
を使用して、すべてのノードが私の状態を満たす体重が少なくなるようにしましたが、後半を満たす方法はわかりません。これは、テーブル自体が膨大であるため、ほとんどの場合メモリから外して実行する必要があります。
編集:私は前にここで質問をしたことがありませんので、あなたがより多くの明快さを必要とする場合、
UPDATEを依頼してください:ここでは、テーブルのサンプルがあります。例えば、ノード12は、の名前を取って命名され
1
/ | \
11 12 13
... ... ...
:
surname name weight
1 1 0.016496
1 2 0.004884
1 3 0.004691
各行を想像し、私はnodes
によって意味を明らかにすることであるが、以下のグラフの下側の3つのノードの特性を表します
ノード11,12,13はそれぞれ3つのノードを子として持ち、その重みはそれぞれの親よりも厳密に小さくなっています。ウェイトスレッシュホールドM = 0.0165を設定した場合、ノード11,12,13を子なしで返すようにしたいと考えています。
非常に明確ではないので、コード全体を投稿できますか?そして、 'nodes'とはどういう意味ですか? 「後半」とは何ですか?また、サンプルデータセット(5行7行)を指定するとかなり役に立ちます。 – MaxU
後半では、ノードが最終セットにある場合、その親がそうでないという条件をどのように満たしているかわかりません。私の編集が私の状況をもう少し明確にしてくれることを願っています –
本質的には、重みがしきい値以下になる最初のノードを見つけようとしています –