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

按连续属性的最大时间块重组Pandas数据集(支持N属性)

合并连续相同属性的时间区间(向量化解决方案)

需求说明

将数据集按所有属性连续保持不变的最大时间块重组:当attribute_1、attribute_2等N个属性值完全相同时,合并对应的连续时间区间。由于数据集规模可能较大,需优先采用向量化方案提升处理效率。


输入输出示例

输入数据集

start_dateend_dateattribute_1attribute_2
02020-01-012020-02-01A1
12020-02-012020-03-01A1
22020-03-012020-04-01B1
32020-04-012020-05-01A1
42020-05-012020-06-01A1
52020-06-012020-07-01A2

期望输出

start_dateend_dateattribute_1attribute_2
02020-01-012020-03-01A1
12020-03-012020-04-01B1
22020-04-012020-06-01A1
32020-06-012020-07-01A2

可复现输入的代码

from datetime import datetime
import pandas as pd

start_dates = pd.date_range(start=datetime(2020, 1, 1), end=datetime(2020, 6, 1), freq="MS", inclusive="both")
end_dates = pd.date_range(start=datetime(2020, 2, 1), end=datetime(2020, 7, 1), freq="MS", inclusive="both")
df = pd.DataFrame({
    "start_date": start_dates,
    "end_date": end_dates,
    "attribute_1": ["A", "A", "B", "A", "A", "A"],
    "attribute_2": [1, 1, 1, 1, 1, 2]
})

向量化实现方案

利用Pandas内置的向量化操作标记连续属性分组,再通过分组聚合合并时间区间,全程避免Python循环,适合处理大规模数据集。

代码实现

# 生成连续相同属性的分组ID:属性变化时分组ID递增
df['group_id'] = (df[['attribute_1', 'attribute_2']] != df[['attribute_1', 'attribute_2']].shift()).any(axis=1).cumsum()

# 按分组ID聚合,保留每组的起始/结束时间与属性值
result = df.groupby('group_id').agg(
    start_date=('start_date', 'first'),
    end_date=('end_date', 'last'),
    attribute_1=('attribute_1', 'first'),
    attribute_2=('attribute_2', 'first')
).reset_index(drop=True)

print(result)

代码解释

  1. 标记分组ID:
    • 使用shift()将属性列向下偏移一行,与原列对比判断属性是否变化;
    • any(axis=1)标记任意属性变化的行,cumsum()累加生成连续相同属性的分组ID。
  2. 分组聚合:
    • 按group_id分组,取每组最早的start_date、最晚的end_date,属性值取组内第一个即可(同组属性完全一致)。
  3. 效率优势:
    所有操作均为Pandas向量化运算,处理百万级数据的性能远高于逐行遍历方案。

运行结果

start_date   end_date attribute_1  attribute_2
0 2020-01-01 2020-03-01           A            1
1 2020-03-01 2020-04-01           B            1
2 2020-04-01 2020-06-01           A            1
3 2020-06-01 2020-07-01           A            2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:05:08