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
相关产品推荐
相关产品推荐

