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

如何将含字符串DateTime的DataFrame转换为1分钟级时间序列

解决方案

步骤1:将字符串时间转换为datetime类型

用pandas.to_datetime()把dateTime列从字符串转为datetime格式,Pandas可自动识别YYYY-MM-DDTHH:MM:SS.fff格式,也可显式指定格式确保转换准确:

import pandas as pd

# 原始数据
data = {
    'dateTime': ['2020-10-31T23:18:00.000', '2020-10-31T23:25:00.000'],
    'level': ['slow', 'moderate']
}
df = pd.DataFrame(data)

# 转换为datetime类型
df['dateTime'] = pd.to_datetime(df['dateTime'], format='%Y-%m-%dT%H:%M:%S.%f')

步骤2:生成1分钟级连续时间序列并填充level值

把转换后的dateTime设为索引,生成从起始时间到目标结束时间的1分钟频率序列,再用**向前填充(ffill)**重复前一个level值直到下一个变化点:

# 设置时间索引
df = df.set_index('dateTime')

# 生成完整的1分钟时间序列:示例扩展到最后一个时间点+1分钟,可按需调整结束时间
start_time = df.index[0]
end_time = df.index[-1] + pd.Timedelta(minutes=1)
full_time_range = pd.date_range(start=start_time, end=end_time, freq='T')

# 重新索引并向前填充level值
result_df = df.reindex(full_time_range).ffill().reset_index().rename(columns={'index': 'dateTime'})

# 可选:格式化时间显示(去掉毫秒,转为指定字符串格式)
result_df['dateTime'] = result_df['dateTime'].dt.strftime('%Y-%m-%d %H:%M:%S')

运行后result_df即为目标格式的1分钟级时间序列,level会自动延续到下一个时间点的前一分钟,之后切换为新值并继续延续。

补充说明

  • 若需生成到指定结束时间的序列,直接修改end_time即可,比如end_time = pd.to_datetime('2020-10-31 23:30:00')
  • ffill()会用前一个非空值填充后续空值,完全匹配“重复level值直至下一个变化点”的需求
  • 时间格式化步骤可选,若需保留datetime类型可直接跳过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:20:25