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

如何查找并合并Pandas DataFrame中重叠或包含的区间行?

合并Pandas DataFrame中重叠/包含的区间行

对于已按start列升序排列的DataFrame,合并所有存在重叠或包含关系的区间行,最简方法可通过分组聚合实现,具体如下:

实现代码

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'start': [100, 400, 450, 750, 920, 1000, 1100],
    'end': [500, 700, 580, 910, 940, 1200, 1300]
})

# 生成分组标识:当前行start大于上一行end时,标记为新组
group_id = (df['start'] > df['end'].shift(1)).cumsum()

# 按分组聚合,取每组最小start和最大end
merged_df = df.groupby(group_id).agg({'start': 'min', 'end': 'max'}).reset_index(drop=True)

print(merged_df)

输出结果

start   end
0    100   700
1    750   910
2    920   940
3   1000  1300

逻辑说明

  1. 分组标识生成:用df['end'].shift(1)获取上一行的end值,与当前行start对比——若当前start更大,说明是独立新区间,生成True;否则属于同一合并组。cumsum()将布尔序列转为连续组ID,相同ID的行对应需要合并的区间。
  2. 聚合合并:按组ID分组后,对start取最小值、end取最大值,直接得到合并后的最简区间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:20:27