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

如何使用Python获取DataFrame中每日的最后一份快照数据

前提操作

首先确认你的DataFrame索引为datetime类型,若未转换先执行以下代码:

import pandas as pd
df.index = pd.to_datetime(df.index)

核心实现代码

写法1(逻辑简洁,性能更优)

# 生成筛选掩码:行索引等于所属日期的最大时间点
mask = df.index == df.groupby(df.index.date).transform(lambda x: x.index.max()).iloc[:,0]
result = df[mask]

写法2(步骤拆分,更适合初学者理解)

# 先提取所有日期对应的最大时间点列表
daily_max_time = df.groupby(df.index.date).apply(lambda group: group.index.max())
# 筛选索引属于最大时间点的所有行
result = df[df.index.isin(daily_max_time)]

逻辑说明

  • df.index.date 从时间索引中提取日期部分作为分组依据,不会丢失原索引的时分秒信息
  • 两种写法都不限制每日最后一个时间点的行数,不管对应1行还是N行都能完整保留,完全符合需求

原有代码错误原因

  1. df.groupby(df.index).last() 是按完整时间戳分组,每个时间点只会返回最后1行,同一个时间点的多行数据会被合并丢失
  2. groupby(df.index.timestamp) 本质还是按完整时间戳分组,逻辑和第一种错误写法一致,额外取iloc[[0,-1]]还会返回每个时间点的首行,完全不符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:48:03