获取组范围内所有值的计数的有效方法

2024-03-28 18:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经提到了this问题,稍加修改的解决方案在示例模式下工作,但对于我的完整数据集(大约3GB的数据),内存不足

我正在尝试查找组范围内所有值的计数(按锚点分组): 范围公式为y_val +- (anchor_val / 20)。 请注意anchor_val在所有锚点上都是一致的,例如:

^{tb1}$

这将导致:

^{tb2}$

(为了清晰起见,我添加了锚定值/20)

编辑:

导致内存不足错误的当前代码:

 df["rule_8_comp_low"] = df["y_val"] - df["anchor_val"] / 20
df["rule_8_comp_high"] = df["y_val"] + df["anchor_val"] / 20
 m = df.reset_index().merge(
 df[["anchor_col", "y_val"]].reset_index(), on="anchor_col"
  )
 m["rule_8_to_count"] = (
 m.y_val_y.ge(m.rule_8_comp_low)
    & m.y_val_y.le(m.rule_8_comp_high)
     & (m.index_x != m.index_y)
  )
 df["y_val_between"] =  m.groupby("index_x").rule_8_to_count.sum()

Tags: to数据dfindexcountcolvalthis