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

如何基于Pandas DataFrame最后一个有效值时间戳获取近7天数据

解决方案

步骤说明

要实现基于最后一个非NaN值的时间戳往前推7天筛选数据,可按以下逻辑操作:

  • 定位Values列最后一个非NaN值对应的时间戳索引
  • 以该时间戳为终点,计算往前7天的起始时间
  • 根据时间范围筛选数据,同时处理全表NaN的极端情况

代码实现

import pandas as pd

# 获取最后一个非NaN值的时间戳索引
last_valid_ts = data['Values'].last_valid_index()

# 处理全表NaN的极端情况
if last_valid_ts is None:
    dataW = pd.DataFrame(columns=data.columns)
else:
    # 计算起始时间:最后一个有效时间戳往前推7天
    start_ts = last_valid_ts - pd.Timedelta(days=7)
    # 筛选目标时间区间内的数据
    dataW = data.loc[start_ts:last_valid_ts]

代码解释

  • data['Values'].last_valid_index():Pandas内置方法,直接高效获取Values列最后一个非NaN值对应的时间戳索引
  • 加入last_valid_ts is None判断:避免全表Values都是NaN时出现报错,此时返回空DataFrame
  • loc[start_ts:last_valid_ts]:利用Pandas时间索引的切片特性,精准筛选目标区间内的所有数据

示例验证

针对你提供的示例DataFrame:

  • 最后一个非NaN值的时间戳为2022-03-22 13:24:00+00:00
  • 往前推7天得到起始时间2022-03-15 13:24:00+00:00
  • 筛选后dataW包含以下两行数据:
timestampValues
2022-03-17 13:21:00+00:0015.2
2022-03-22 13:24:00+00:0017.8

内容的提问来源于stack exchange,提问作者Sara.SP92

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:15:07