如何在Pandas DataFrame中合并差值≤2的行并统计合并数?
使用Pandas实现连续差值≤2的行合并与计数
完整实现代码
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({'B': [1, 2, 5, 6, 7, 10]}) # 生成分组标签:当当前行B与前一行B的差值>2时,分组编号+1 df['group'] = (df['B'].diff() > 2).cumsum() # 按分组聚合,取每组最小的B值,统计每组行数 result = df.groupby('group').agg(B=('B', 'min'), count=('B', 'size')).reset_index(drop=True) print(result)
代码解释
- 构造原始数据:创建符合需求的DataFrame(若已有现成数据可跳过此步骤)。
- 生成分组标签:用
diff()计算当前行与前一行的差值,判断是否大于2,再通过cumsum()累加生成连续分组编号——差值大于2时分组号加1,自动将连续差值≤2的行归为同一组。 - 分组聚合:按分组号分组,用
agg()同时完成两个操作:提取每组最小的B值(满足"选择值较小的行"的要求)、统计组内行数(即合并计数),最后用reset_index(drop=True)重置索引,得到目标格式。
运行后输出结果:
B count 0 1 2 1 5 3 2 10 1
内容的提问来源于stack exchange,提问作者Fresto
相关产品推荐
相关产品推荐

