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

如何在pandas DataFrame中查找首个索引≥指定值的行的整数位置?

解决pandas datetime索引的首个≥目标值行的整数位置查找问题

由于你的DataFrame索引是已排序、无重复的np.datetime64类型,最适合的方法是使用df.index.searchsorted(),它专门针对有序索引做二分查找,直接返回符合要求的整数位置,完美匹配你的需求:

核心用法

searchsorted()默认采用side='left'参数,会返回第一个大于等于目标值的索引位置,这个位置可以直接传给iloc[]使用,而且效率极高(O(log n)),适合大数据集重复复用。

示例代码:

import pandas as pd
import numpy as np

# 假设你的DataFrame已经加载完成
# target_dt 是你要查找的np.datetime64类型值
target_dt = np.datetime64('2023-10-01 12:00:00')

# 获取整数位置
pos = df.index.searchsorted(target_dt)

# 处理边界情况:如果目标值大于所有索引,pos会等于df的行数
if pos < len(df):
    # 用iloc获取对应行
    result_row = df.iloc[pos]
else:
    # 没有符合条件的行,按需处理(比如返回最后一行或提示)
    print("没有找到大于等于目标时间的行")

为什么不用loc?

  • loc[]需要精确匹配索引值,不存在时会抛出KeyError,无法直接返回首个≥目标值的行
  • searchsorted()基于二分查找,比遍历查找效率高得多,返回的整数位置可以存储下来重复使用,避免对大数据集重复查找

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:15:33