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

Python3:如何将Datetime索引转为小数形式小时(30分钟对应.5)

解决Datetime索引转小数时间戳的问题

嘿,我完全懂你的需求——把每30分钟间隔的Datetime索引转换成带.5的小数时间戳,比如10:00对应10.0,10:30对应10.5对吧?这个问题其实很好解决,我给你一步步拆解:

核心思路

我们只需要把Datetime里的小时整数部分和分钟转换为小时的小数部分相加即可:

  • 0分钟 → 0.0
  • 30分钟 → 30/60 = 0.5,刚好符合你的规则

具体代码实现

首先确保你的DataFrame索引是DatetimeIndex(如果不是,先做转换),然后直接计算:

import pandas as pd

# 示例DataFrame(替换成你自己的数据即可)
df = pd.DataFrame(
    data={"temperature": [22, 21, 20, 19]},
    index=pd.date_range(start="2024-05-01 00:00", periods=4, freq="30T")
)

# 第一步:如果索引不是DatetimeIndex,先转换(已是的话可跳过)
df.index = pd.to_datetime(df.index)

# 第二步:生成小数形式的时间戳列
df["decimal_timestamp"] = df.index.hour + df.index.minute / 60

运行结果示例

执行完代码后,你的DataFrame会输出类似这样的结果:

temperature  decimal_timestamp
2024-05-01 00:00:00           22                0.0
2024-05-01 00:30:00           21                0.5
2024-05-01 01:00:00           20                1.0
2024-05-01 01:30:00           19                1.5

为什么这个方法靠谱?

  • df.index.hour直接提取索引里的小时整数,简单高效
  • df.index.minute / 60把分钟转换成以小时为单位的小数,30分钟刚好对应0.5,完美匹配你的规则
  • 两者相加就得到了你需要的小数时间戳

如果之前的脚本没生效,大概率是没正确利用DatetimeIndex的内置属性,或者计算分钟转小数的方式有误(比如用了除以30而非60),试试上面的方法肯定能解决问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:18:39