当前位置: 首页 > news >正文

【Pandas】pandas DataFrame last_valid_index

Pandas2.2 DataFrame

Time Series-related

方法描述
DataFrame.asfreq(freq[, method, how, …])用于**将时间序列数据转换为指定频率(resample to frequency)**的方法
DataFrame.asof(where[, subset])用于查找时间序列中最接近指定时间点的非 NaN 值的方法
DataFrame.shift([periods, freq, axis, …])用于**将 DataFrame 的数据沿着指定轴移动(平移)**的方法
DataFrame.first_valid_index()用于获取 DataFrame 中第一个非空(非 NaN)值所在的行索引的方法
DataFrame.last_valid_index()用于获取 DataFrame 中最后一个非空(非 NaN)值所在的行索引的方法

pandas.DataFrame.last_valid_index()

pandas.DataFrame.last_valid_index() 是一个用于获取 DataFrame 中最后一个非空(非 NaN)值所在的行索引的方法。它与 .first_valid_index() 相对,常用于时间序列或一般数据中,查找最后一个有效观测值的位置


📌 方法签名
DataFrame.last_valid_index()

🔧 参数说明:
  • 无参数。

✅ 返回值
  • 返回一个标量值,表示最后一个非空值所在的行索引
  • 如果整个 DataFrame 都是 NaN,则返回 None

🧪 示例代码及结果
示例 1:基本用法
import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [np.nan, np.nan, 3, 4, 5],'B': [np.nan, 2, np.nan, 4, 5],'C': [1, 2, 3, np.nan, np.nan]
})print("Original DataFrame:")
print(df)
输出:
     A    B    C
0  NaN  NaN  1.0
1  NaN  2.0  2.0
2  3.0  NaN  3.0
3  4.0  4.0  NaN
4  5.0  5.0  NaN
# 获取最后一个非空值的索引
result = df.last_valid_index()
print("\nLast valid index:", result)
输出:
Last valid index: 4

解释:列 'A''B' 在第 4 行仍有有效值,因此整体返回索引 4


示例 2:每列的最后一个有效索引不同
df = pd.DataFrame({'A': [1, 2, 3, np.nan, np.nan],'B': [1, 2, np.nan, np.nan, np.nan],'C': [1, 2, 3, 4, np.nan]
})print("Original DataFrame:")
print(df)result = df.last_valid_index()
print("\nLast valid index:", result)
输出:
   A    B    C
0  1  1.0  1.0
1  2  2.0  2.0
2  3  NaN  3.0
3 NaN  NaN  4.0
4 NaN  NaN  NaNLast valid index: 3

虽然 'A''B' 在第 3 行之后就没有有效值了,但 'C' 在第 3 行仍有有效值,所以整体返回索引 3


示例 3:所有值都是 NaN 的情况
df_all_nan = pd.DataFrame({'A': [np.nan, np.nan],'B': [np.nan, np.nan]
})result = df_all_nan.last_valid_index()
print("\nLast valid index when all are NaN:", result)
输出:
Last valid index when all are NaN: None

🧠 应用场景
场景说明
时间序列分析查找最晚的有效观测时间点
数据清洗定位数据结束位置,去除尾部的空值
缺失值处理确定最后一行有有效数据的位置
数据对齐找出多个时间序列中最晚的数据终点
特征工程判断某个变量何时停止记录

⚠️ 注意事项
  • 返回的是行索引,不是具体的列名或位置;
  • 只要某一行中任意一列有非空值,该行就被视为“有效”;
  • 不会修改原始数据;
  • 对于时间序列数据,返回的时间索引可以直接用于切片或筛选。

✅ 总结对比
方法是否返回索引是否考虑整行有效是否支持时间索引
.last_valid_index()❌(只要有一列非空即可)
.notna().iloc[::-1].idxmax()✅(可按列使用)
.dropna().index[-1]✅(整行非空)

如果你希望快速定位 DataFrame 中最后出现有效数据的行索引.last_valid_index() 是非常简洁高效的选择。

http://www.lqws.cn/news/541963.html

相关文章:

  • 校企协同育人,智慧养老实训基地助力人才就业无忧
  • 【中文核心期刊推荐】《计算机工程与科学 》
  • MST56XXB/MST5650B/MST5033B 是一款耐高压的LDO芯片,针对中控设备,给MCU供电,60V的耐压,150mA
  • elastic-ai.creator开源程序是设计、训练和生成专门针对 FPGA 优化的神经网络
  • react-sequence-diagram时序图组件
  • 飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案
  • 【数据结构】B树的介绍及其实现C++
  • 带标签的 Docker 镜像打包为 tar 文件
  • React Native 如何实现拉起App
  • PHP在做爬虫时的解决方案
  • Franka 机器人在配置空间距离场实验中的突破性应用:从算法优化到动态场景适配
  • 无人机防护装置技术解析
  • 基于 Spring Boot + Vue 3的现代化社区团购系统
  • element-plus table合并列、合计行、表格填报添加验证
  • redisTemplate简单实现幂等性校验
  • fishbot随身系统安装nvidia显卡驱动
  • Rust交互式编程环境Jupyter Lab搭建
  • 【unitrix】 4.10 数字类型的按位异或运算实现(bitxor.rs)
  • 同样是synthesis(综合) HLS和Vivado里面是有什么区别
  • 【git学习】学习目标及课程安排
  • Java 大视界 -- Java 大数据在智能教育学习社群知识共享与协同学习促进中的应用(326)
  • 【HTML】
  • 中国科技术语杂志中国科技术语杂志社中国科技术语编辑部2025年第3期目录
  • 算法第55天|冗余连接、冗余连接II
  • C++ 第三阶段 并发与异步 - 第二节:异步任务(std::async)
  • 在docker容器中安装docker服务,基于fuse-overlayfs进行overlay挂载,而不是vfs
  • HarmonyOS NEXT仓颉开发语言实现画板案例
  • MySQL 离线安装MariaDB
  • SYSCFG 时钟在 GD32F4 系列微控制器中的作用
  • Layer by Layer: Uncovering Hidden Representations in Language Models