基于行间差值对Pandas DataFrame进行分组的实现方法
按Pandas DataFrame行间差值分组的实现方案
核心思路
通过计算a列相邻行的差值,识别分组分界点,再累加生成分组ID,最终用groupby完成分组。
完整代码示例
import pandas as pd # 初始化数据框 zz = pd.DataFrame([[1,0], [1.1, 2], [2,3], [2.19,4], [5,7], [6,0], [7,2], [8,3], [8.05, 0], [8.12,4]], columns = ['a', 'b']) # 生成分组ID:当相邻行a列差值≥0.2时,视为新分组的起点,累加计数得到分组标识 zz['group_id'] = (zz['a'].diff() >= 0.2).cumsum() # 执行分组 grouped = zz.groupby('group_id') # 查看每个分组的行索引 for group_num, group in enumerate(grouped, start=1): _, df = group print(f"group{group_num}: {df.index.tolist()}")
输出结果
运行代码后将得到与预期一致的分组:
- group1: [0, 1]
- group2: [2, 3]
- group3: [4]
- group4: [5]
- group5: [6]
- group6: [7, 8, 9]
(注:预期中的分组编号偏移是因为起始计数差异,实际分组内容完全匹配)
内容的提问来源于stack exchange,提问作者jAguesses
相关产品推荐
相关产品推荐

