Python 内存不足,正在筛选pandas中的HDF5表
我有一个4+Gb的HDF5表,其中的行对应于树状结构中的节点。共有三列突出显示:Python 内存不足,正在筛选pandas中的HDF5表,python,pandas,filtering,Python,Pandas,Filtering,我有一个4+Gb的HDF5表,其中的行对应于树状结构中的节点。共有三列突出显示:姓名,姓氏,体重。姓氏记录给定节点的父节点的名称,名称是当前节点的名称(相对于父节点),权重是节点的权重。名称和姓氏都是字符串,姓氏+名称构成此节点的唯一标识符。最后,对于任何给定节点,其子节点的权重严格小于其自身的权重 我的问题是,我想筛选此表以查找权重小于给定阈值M的所有节点,但如果某个节点存在于我的最终集合中,则其父节点不应在集合中 我使用了pd.read_hdf(,其中=['weight
姓名
,姓氏
,体重
。姓氏记录给定节点的父节点的名称,名称是当前节点的名称(相对于父节点),权重是节点的权重。名称和姓氏都是字符串,姓氏+名称构成此节点的唯一标识符。最后,对于任何给定节点,其子节点的权重严格小于其自身的权重
我的问题是,我想筛选此表以查找权重小于给定阈值M的所有节点,但如果某个节点存在于我的最终集合中,则其父节点不应在集合中
我使用了pd.read_hdf(,其中=['weight
来减少所有节点的重量,这些节点的重量满足我的条件,但我不知道如何满足后半部分。这也需要在大部分内存之外完成,因为表本身是巨大的
编辑:我以前从未在这里问过任何问题,所以如果你需要更清楚的问题,请提问
更新:这是表格的一个示例
surname name weight
1 1 0.016496
1 2 0.004884
1 3 0.004691
为了阐明我所说的节点
的含义,假设每一行代表下图中较低3个节点的属性:
1
/ | \
11 12 13
... ... ...
例如,节点12通过采用其父节点(1)的名称并连接其位置(2)节点11、12和13各有3个节点作为其子节点,其权重严格小于各自的父节点。如果我设置权重阈值M=0.0165,我希望返回节点11、12和13,而不返回它们的任何子节点 如果您正在寻找一种类似熊猫的语法,并且您有超出核心的需求,那么您将需要Blaze之类的东西来控制它。表示它可以在并行处理部分处理HDF5文件
然而,你想用它做什么的问题并不清楚。如果必须的话,请给出数据输入和输出的示例。您能发布完整的代码吗,因为它不太清楚。你说的节点是什么意思?下半部分是什么?如果在下半部分指定一个示例数据集(5-7行),这也会非常有用。我的意思是,我不知道如何满足这样的条件:如果一个节点在我的最终集中,那么它的父节点不在。我希望我的编辑能进一步澄清我的情况本质上,我试图找到第一个节点,其中节点
111
的权重下降到阈值以下-如何区分它是1+11
还是11+1
?每个节点正好有3个子节点,每个节点名为1、2、3