You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame列中阈值范围内的相近数值替换为组内最大值

Pandas 实现接近数值分组替换为组最大值方案

完整实现代码

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({"col1":[0,1,2,3,4,5,6],"col2":[1,5,6,10,12,14,17]})
# 自定义接近度阈值
threshold = 2

# 核心处理逻辑
# 1. 对目标列升序排序,保留原索引
sorted_col = df['col2'].sort_values()
# 2. 基于差值生成分组编号:相邻值差大于阈值则划分为新组
groups = (sorted_col.diff() > threshold).cumsum()
# 3. 分组计算最大值后映射回原DataFrame的行顺序
df['col2'] = sorted_col.groupby(groups).transform('max').reindex(df.index)

# 输出结果
print(df)

输出结果

col1  col2
0     0     1
1     1     6
2     2     6
3     3    14
4     4    14
5     5    14
6     6    17

逻辑说明

  1. 先对目标列做升序排序,保证数值接近的元素相邻,为后续差分判断分组做准备
  2. 计算排序后序列相邻元素的差值,差值大于阈值的位置标记为新分组的起点,通过累加得到每个数值对应的分组编号
  3. 按分组计算组内最大值,再通过reindex恢复原DataFrame的行顺序,赋值回原列即完成处理

场景适配

针对pytesseract识别文本坐标修正场景,仅需要将代码中的col2替换为识别结果中的顶部坐标列名,调整threshold为你可接受的坐标偏差范围即可直接使用。


内容的提问来源于stack exchange,提问作者Sam S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:36:01