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

如何将pandas datetime对象的时间调整为整点起始时刻?

如何将Pandas Datetime列调整为整点时刻

嘿,这个需求我经常碰到,给你分享几个简单好用的方法,轻松把datetime列的分秒归零,只保留日期和小时:

方法1:使用dt.floor('H')(推荐)

这是最直接高效的方式,floor('H')会把时间向下取整到最近的整点,自动把分钟和秒设为0:

import pandas as pd

# 先创建一个示例DataFrame
df = pd.DataFrame({
    'original_time': pd.to_datetime(['2024-06-10 08:45:12', '2024-06-11 19:22:59', '2024-06-12 00:05:00'])
})

# 生成整点时间列
df['hourly_time'] = df['original_time'].dt.floor('H')

运行后hourly_time列的结果就是:2024-06-10 08:00:00、2024-06-11 19:00:00、2024-06-12 00:00:00,完全符合你的要求。

方法2:格式化字符串后转Datetime

如果你喜欢更直观的方式,可以先把datetime格式化为只保留年、月、日、小时的字符串,再转回datetime类型:

df['hourly_time'] = pd.to_datetime(df['original_time'].dt.strftime('%Y-%m-%d %H:00:00'))

这个方法原理很简单,通过strftime指定输出格式,强制分秒为00,再用pd.to_datetime转回时间类型,适合对字符串格式化更熟悉的朋友。

方法3:手动替换分秒值

用dt.replace直接修改分钟和秒的值,灵活性很高,比如你以后想把分钟设为30也能轻松改:

df['hourly_time'] = df['original_time'].dt.replace(minute=0, second=0)

这个方法一目了然,直接指定要替换的时间部分,代码可读性很强。

这三种方法都能实现你的需求,其中dt.floor('H')是pandas官方推荐的时间序列处理方法,性能最优,代码也最简洁,优先推荐使用哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:23:06