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

【Pandas】pandas DataFrame first_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)值所在的行索引的方法

pandas.DataFrame.first_valid_index()

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


📌 方法签名
DataFrame.first_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.first_valid_index()
print("\nFirst valid index:", result)
输出:
First valid index: 0

解释:列 'C' 的第一行(索引 0)是第一个出现非空值的行。


示例 2:每列的第一个有效索引不同
df = pd.DataFrame({'A': [np.nan, np.nan, np.nan, 4, 5],'B': [np.nan, np.nan, 3, 4, 5],'C': [1, 2, 3, 4, 5]
})print("Original DataFrame:")
print(df)result = df.first_valid_index()
print("\nFirst valid index:", result)
输出:
   A    B  C
0 NaN  NaN  1
1 NaN  NaN  2
2 NaN  3.0  3
3 4.0 4.0  4
4 5.0 5.0  5First valid index: 0

即使 'A''B' 的第一个非空值出现在后面,但 'C' 在第一行就有有效值,因此整体返回索引 0


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

🧠 应用场景
场景说明
时间序列分析查找最早的有效观测时间点
数据清洗定位数据起始位置,去除前面的空值
缺失值处理确定从哪一行开始有有效数据
数据对齐找出多个时间序列中最早的数据起点
特征工程判断某个变量何时开始有记录

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/260367.html

相关文章:

  • 大厂测开实习和小厂开发实习怎么选
  • 使用 ReAct 框架在 Ollama 中实现本地代理(Agent)
  • moduo之缓冲区Buffer
  • Ubuntu网络数据包发送工具大全
  • MT4完全操作指南:从零基础到EA自动交易
  • LLM复杂记忆存储-多会话隔离案例实战
  • 高斯混合模型(Gaussian Mixture Model, GMM)
  • Spark SQL to_json 函数介绍
  • Riverpod原理解析(实现一个自己的Riverpod)
  • 蜂鸟代理IP+云手机:跨境电商多账号运营的“隐形风控引擎”
  • 从提示工程(Prompt Engineering)到上下文工程(Context Engineering)
  • C++ 第三阶段:语言改进 - 第四节:nullptr vs NULL
  • Reactor Handle
  • MessagesPlaceholder和多轮AI翻译助手实战
  • ubuntu 远程桌面 xrdp + frp
  • 物奇微WQ5007A上手指南
  • opensbi从0到1入门学习
  • 基于dockerfile构建java springboot项目镜像
  • Java+Vue开发的SRM企业招采管理系统,一站式管理招采,助力企业高效运营
  • 系统分析师案例知识点
  • ​​Deepoc大模型在光电研发中的核心技术突破与应用​
  • 单例设计模式详解
  • vue3 定时刷新
  • PAT A 1052 Linked List Sorting
  • 【python实用小脚本-118】基于Flask的用户认证系统:app.py、forms.py与user.py解析
  • 夹子排名查看平台
  • 【江科大】Cursor 解析江科大倒立摆PID工程源码《00-PID综合测试程序-V1.1》《03-增量式PID定速控制》(Doxygen注释风格)
  • Webshell工具的流量特征分析(菜刀,蚁剑,冰蝎,哥斯拉)
  • python pyecharts 数据分析及可视化
  • 微信小程序<rich-text>支持里面图片点击放大