如何在Pandas中获取每日最大Datetime对应的Duration值
实现代码
首先确保你的时间列已转换为Pandas datetime类型,以下提供两种常用实现方案:
方案1:排序后按日期去重(写法简洁易读)
import pandas as pd # 示例数据构造,实际使用时替换为你自己的DataFrame即可 df = pd.DataFrame({ 'starttime': ['2021-07-17 03:30:00', '2021-07-17 07:30:00', '2021-07-18 03:30:00', '2021-07-18 07:40:00'], 'Duartion': [1234, 498, 1700, 2185] }) # 转换时间列为datetime格式,如果已经是datetime类型可跳过此步 df['starttime'] = pd.to_datetime(df['starttime']) # 核心逻辑:按时间升序排序后,按日期去重,保留每组最后一条也就是时间最大的记录 res = df.sort_values('starttime').drop_duplicates(df['starttime'].dt.date, keep='last')
方案2:分组取最大值索引(适合自定义分组逻辑的场景)
# 按日期分组,取每组时间最大值对应的行索引 max_idx = df.groupby(df['starttime'].dt.date)['starttime'].idxmax() # 按索引筛选行得到结果 res = df.loc[max_idx]
如果你实际使用的列名是问题开头提到的Datetime、Duration,把代码中对应的列名替换即可,两种方案输出结果都和你要求的预期结果一致。
内容的提问来源于stack exchange,提问作者Prakash
相关产品推荐
相关产品推荐

