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

Pandas如何获取DataFrame中指定值对应的相对行号

问题说明

通过df.loc裁剪得到的子DataFrame会保留原始母表的行索引,直接使用df.index[df.value == 目标值]拿到的是原始索引值,而非子表内从0开始计数的相对行号。以给出的示例数据为例,值为32400的行原始索引为1450,在当前子表中的相对行号为2。

实现方案

以下方法均可以拿到目标相对行号,可根据使用场景选择:

  • 重置索引后匹配
    先重置子表索引、丢弃原始索引生成从0开始的连续行号,再做匹配即可:
    # drop=True表示不将原始索引保留为单独列
    df_temp = df.reset_index(drop=True)
    rel_pos = df_temp.index[df_temp.value == 32400][0]
    # 执行后rel_pos的值为2
    
  • 用numpy.where直接定位
    无需修改原表,借助numpy的where方法直接识别布尔判断结果中True值的位置:
    import numpy as np
    rel_pos = np.where(df.value == 32400)[0][0]
    # 返回结果为2
    
  • 布尔序列直接取位置
    无需额外导包,直接对值匹配生成的布尔序列取第一个True值的位置即可:
    # 仅适用于确定匹配值唯一存在的场景
    rel_pos = (df.value == 32400).argmax()
    # 返回结果为2
    

注意事项:如果目标值在表中存在多个匹配行,以上方法默认返回第一个匹配项的相对位置;如果目标值不存在,argmax方法会错误返回0,建议使用前先做存在性判断:if 32400 in df.value.to_list() 再执行位置提取。

内容的提问来源于stack exchange,提问作者hugo.d

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:18:06