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

pandas按指定列±0.1容差查找重复值并创建分组的实现咨询

pandas实现容差分组生成Set编号的方法

完整实现代码

import pandas as pd

# 1. 加载数据(如果从文件读取可替换为pd.read_excel/pd.read_csv等方法
data = {
    "Part no": ["A1", "A2", "A3", "A4", "A5"],
    "A": [0.25, 0.26, 0.3, 0.7, 0.8],
    "B": [0.2, 0.3, 0.3, 0.3, 0.4],
    "C": [0.3, 0.3, 0.3, 0.3, 0.45],
    "D": [0.4, 0.4, 0.3, 0.3, 0.46]
}
df = pd.DataFrame(data)

# 2. 容差分组核心逻辑
# 保存原索引,处理完后恢复原数据顺序
df = df.reset_index().sort_values(by="A", ignore_index=True)
# 相邻A值差值大于0.1则为新分组起点,累加标记后加1实现编号从1开始
df["Set"] = (df["A"].diff() > 0.1).cumsum() + 1
# 恢复原顺序
df = df.sort_values(by="index", ignore_index=True).drop(columns="index")

# 输出结果
print(df)

逻辑说明

  • 先对A列排序是为了保证仅通过相邻数值对比即可判断分组边界,避免因数值顺序混乱导致分组错误。
  • diff()方法用于计算当前行与上一行A列的差值,第一行差值为NaN,和0.1比较结果为False,累加后初始值为0,加1后第一组编号为1,符合需求。
  • 该逻辑默认满足连通性分组规则:只要相邻数值差值≤0.1即属于同一分组,比如0.25、0.3、0.38会被划分为同一组。

内容的提问来源于stack exchange,提问作者Gokul Prasanth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:15:04