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

将Pandas时间间隔重采样至秒级:展开区间生成DatetimeIndex

解决方案:将时间区间DataFrame展开为逐秒时间点数据

Got it, let's work through this problem step by step to get your time interval data expanded into a second-by-second timeline with the correct status values (and NaNs for the gaps). Here's how to do it:


首先确认初始数据

先把你的原始DataFrame创建代码放出来,确保我们从同一起点出发:

import pandas as pd

df = pd.DataFrame({
    "start": ["2017-01-01 13:09:01", "2017-01-01 13:09:07", "2017-01-01 13:09:12"],
    "end": ["2017-01-01 13:09:05", "2017-01-01 13:09:09", "2017-01-01 13:09:14"],
    "status": ["OK", "ERROR", "OK"]
})

初始数据格式:

startendstatus
2017-01-01 13:09:012017-01-01 13:09:05OK
2017-01-01 13:09:072017-01-01 13:09:09ERROR
2017-01-01 13:09:122017-01-01 13:09:14OK

分步实现转换

Step 1:将时间字符串转为datetime类型

首先要把start和end列从字符串转为datetime对象,这是生成时间序列的基础:

df['start'] = pd.to_datetime(df['start'])
df['end'] = pd.to_datetime(df['end'])

Step 2:为每个时间区间生成逐秒时间序列

对每一行数据,用pd.date_range生成从start到end的所有秒级时间点,再把这些时间序列拆分成单独行:

# 为每个区间生成完整的秒级时间序列
df['timestamps'] = df.apply(lambda row: pd.date_range(start=row['start'], end=row['end'], freq='S'), axis=1)

# 将时间序列列表拆分为单独行
expanded_df = df.explode('timestamps').reset_index(drop=True)

Step 3:补全时间间隙并填充NaN

现在我们需要生成从最早开始时间到最晚结束时间的完整时间轴,把之前拆分的数据对齐到这个轴上,间隙部分自动填充NaN:

# 生成完整的秒级时间范围
full_time_range = pd.date_range(start=df['start'].min(), end=df['end'].max(), freq='S')

# 将时间戳设为索引,对齐到完整时间轴
final_df = expanded_df.set_index('timestamps')['status'].reindex(full_time_range)

# 重置索引,匹配目标格式的列名
final_df = final_df.reset_index().rename(columns={'index': '', 'status': 'status'})

最终结果

打印final_df就能得到你想要的格式:

status
2017-01-01 13:09:01OK
2017-01-01 13:09:02OK
2017-01-01 13:09:03OK
2017-01-01 13:09:04OK
2017-01-01 13:09:05OK
2017-01-01 13:09:06NaN
2017-01-01 13:09:07ERROR
2017-01-01 13:09:08ERROR
2017-01-01 13:09:09ERROR
2017-01-01 13:09:10NaN
2017-01-01 13:09:11NaN
2017-01-01 13:09:12OK
2017-01-01 13:09:13OK
2017-01-01 13:09:14OK

小提示

  • 如果需要其他时间频率(比如分钟级),只需要把freq='S'改成freq='T'即可。
  • reindex方法会自动为缺失的时间点填充NaN,完美适配需求中的间隙场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:53:10