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

如何在Pandas中从整数日期与时间列创建DatetimeIndex

解决基于1900年起始天数+当日秒数生成DatetimeIndex的问题

最简解决方案

直接用Pandas的向量式时间处理函数生成目标时间列,无需循环或逐行计算:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'date': [40603]*8,
    'time': range(34222, 34230)
})

# 生成标准时间列
df['idx'] = pd.to_datetime(
    df['date'] * 86400 + df['time'],
    unit='s',
    origin='1900-01-01'
)

# 设置为DatetimeIndex(满足后续重采样需求)
df.set_index('idx', inplace=True)

# 查看带原列的结果
print(df.reset_index())

代码说明

  1. 总秒数计算:把date列的天数转成秒数(1天=86400秒),加上time列的当日秒数,得到从1900-01-01 00:00:00起的总秒数。
  2. 时间转换:通过unit='s'指定输入为秒数,origin='1900-01-01'设置时间起点,直接生成标准Timestamp序列。
  3. 设置索引:调用set_index将时间列设为DatetimeIndex,满足后续重采样操作要求。

替代分步方案(更直观)

如果想要拆分日期和时间的处理步骤,也可以这么写:

df['idx'] = pd.to_datetime('1900-01-01') + \
            pd.to_timedelta(df['date'], unit='D') + \
            pd.to_timedelta(df['time'], unit='s')
df.set_index('idx', inplace=True)

报错原因

Python标准库的datetime.timedelta只能接受单个数值,没法直接处理Pandas的Series(向量数据)。而Pandas的pd.to_timedelta和pd.to_datetime专门支持向量操作,能高效处理整列数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:46:07