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

求助:将模拟时长列转换为以2021-05-01为起始的Datetime列

问题描述

我定义了如下datetime对象作为模拟参考起始时间:

import pandas as pd
from datetime import datetime
t0=datetime.strptime("01/01/2011 00:00:00", "%d/%m/%Y %H:%M:%S")

我尝试将t0转换为总小时数后与DataFrame的Hours列相加,期望得到以2021-01-01为起始的datetime列,但始终未成功。

我的Hours列记录的是从t0开始的时长数据:

模型输出的时长数据:

    Hours
0   44317.0
1   44317.250393519
2   44317.500138889
3   44317.750462963
4   44318.00005787
5   44318.250266204
6   44318.500543981
7   44318.7503125
8   44319.000520833
9   44319.250729167
10  44319.500428241

在Excel中将该列转换为日期格式后,得到了我期望的结果(从2021-05-01开始的时间):

期望输出:

Hours
1   5/1/21 0:00
2   5/1/21 6:00
3   5/1/21 12:00
4   5/1/21 18:00
5   5/2/21 0:00
6   5/2/21 6:00
7   5/2/21 12:00
8   5/2/21 18:00
9   5/3/21 0:00
10  5/3/21 0:00

但在Python中直接使用pd.to_datetime(df.Hours)转换Hours列时,得到的却是以1970-01-01为起始的结果,这并非我想要的:

Python输出(非期望结果):

    Hours
0   1970-01-01 00:00:00.000044317
1   1970-01-01 00:00:00.000044317
2   1970-01-01 00:00:00.000044317
3   1970-01-01 00:00:00.000044317
4   1970-01-01 00:00:00.000044318
5   1970-01-01 00:00:00.000044318
6   1970-01-01 00:00:00.000044318
7   1970-01-01 00:00:00.000044318
8   1970-01-01 00:00:00.000044319
9   1970-01-01 00:00:00.000044319
10  1970-01-01 00:00:00.000044319

请问如何将其转换为以2021年5月1日为起始的datetime列?

解决方案

根据Michael S.的回答:
Hours列实际上并非小时数而是天数,由于使用的软件采用类似Excel的1900-01-01纪元时间,误将天数标注为小时数。使用以下代码即可得到正确结果:

pd.to_datetime(df.Hours, unit='d', origin='1900-01-01')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:15:28