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

