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

Python中动态重叠时段的日期分配方案求解

批量为跨多日时段数据分配对应日期的Python实现

问题背景

我有一个包含超10000项研究的数据集,每项研究按15或60分钟的时段记录数据,字段包括开始日期、开始时间、时间间隔(15/60分钟)及计数时间(无关联日期)。研究通常持续48小时,因起始时间的关系会跨越3个自然日,且计数时间是按00:00开始的时间顺序排列的,导致日期归属混乱。比如某研究始于10:45、每15分钟记录一次(共192个时段),日志里的时段归属是:00:00-10:30属于第2天,10:45-23:45属于第1天,第二轮00:00-10:30属于第3天,最后10:45-23:45属于第2天。需要为每个计数时间自动匹配正确的日期,且不同研究的时间间隔、持续时长、起始时间均不固定。

核心解决思路

基于分组计算的逻辑,通过标记时段出现顺序、对比起始时间来批量分配日期:

  • 按研究ID分组,每组独立处理日期映射
  • 标记每个计数时间在周期内的出现序号(第一次/第二次)
  • 根据计数时间与研究起始时间的先后关系,结合出现序号确定日期偏移
  • 最终通过开始日期加偏移得到对应日期

Python 代码实现

假设数据集是Pandas DataFrame,先进行预处理,再定义分组处理函数:

1. 数据预处理

import pandas as pd

# 读取数据(替换为你的数据源路径)
df = pd.read_csv("your_research_data.csv")

# 转换字段为时间类型
df["开始日期"] = pd.to_datetime(df["开始日期"])
df["开始时间"] = pd.to_datetime(df["开始时间"], format="%H:%M").dt.time
df["计数时间"] = pd.to_datetime(df["计数时间"], format="%H:%M").dt.time

2. 分组处理函数

def assign_correct_dates(group):
    # 获取当前研究的基础参数
    start_date = group["开始日期"].iloc[0]
    start_time = group["开始时间"].iloc[0]
    
    # 标记每个计数时间在周期内的出现序号(0=第一次,1=第二次)
    group["时段出现序号"] = group.groupby("计数时间").cumcount()
    
    # 根据时间关系计算日期偏移
    def get_date_offset(row):
        count_time = row["计数时间"]
        slot_order = row["时段出现序号"]
        
        if slot_order == 0:
            # 第一次出现:晚于起始时间属于第1天,早于则属于第2天
            return 0 if count_time >= start_time else 1
        else:
            # 第二次出现:晚于起始时间属于第2天,早于则属于第3天
            return 1 if count_time >= start_time else 2
    
    group["日期偏移"] = group.apply(get_date_offset, axis=1)
    # 计算最终日期
    group["最终日期"] = start_date + group["日期偏移"].apply(lambda x: pd.Timedelta(days=x))
    
    return group

# 按研究ID分组执行日期分配
processed_df = df.groupby("研究ID").apply(assign_correct_dates).reset_index(drop=True)

3. 适配非48小时时长的研究

如果有研究持续时长不是48小时,可以在函数中加入总时段数判断,调整时段出现序号的逻辑,比如:

total_slots = len(group)
daily_slots = int(24 * 60 / group["时间间隔"].iloc[0])
# 判断研究持续天数
duration_days = total_slots // daily_slots
# 后续根据duration_days调整日期偏移的计算逻辑

验证

用你手动标注的单研究样本数据测试此函数,根据实际情况微调日期偏移的判断规则即可适配所有研究。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:44:55