如何在Pandas DataFrame中获取每日最早和最晚时间点
解决方案
可以通过Pandas的分组与时间处理功能实现需求,具体步骤如下:
1. 确保日期列是datetime类型
如果你的date列还未转换为datetime格式,先执行类型转换:
import pandas as pd data['date'] = pd.to_datetime(data['date'])
2. 按日期分组并计算每日极值时间
通过提取日期部分作为分组依据,对每组的时间字段取最早和最晚值,再格式化为时间字符串:
# 按日期分组,聚合计算每日最早、最晚时间 daily_stats = data.groupby(data['date'].dt.date).agg( earlier_hour=('date', lambda x: x.min().strftime('%H:%M:%S')), latest_hour=('date', lambda x: x.max().strftime('%H:%M:%S')) ).reset_index() # 重命名日期列以匹配目标格式 daily_stats.rename(columns={'date': 'date_daily'}, inplace=True)
最终输出
运行上述代码后,daily_stats即为你需要的结果:
date_daily earlier_hour latest_hour 0 2018-01-01 03:00:00 08:00:00 1 2018-01-02 04:00:00 12:00:00 2 2018-01-03 05:00:00 17:00:00
补充说明
dt.date可快速从datetime对象中提取纯日期部分,作为分组的唯一标识agg方法支持一次性对分组数据执行多维度聚合,这里用lambda函数将datetime对象格式化为仅含时分秒的字符串reset_index()用于将分组后的索引转为普通列,匹配目标数据结构
内容的提问来源于stack exchange,提问作者João David de Freitas
相关产品推荐
相关产品推荐

