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

如何在Pandas Series中查找指定字符串索引及重复值首尾出现位置

Pandas Series 指定值索引查询方案

1. 获取所有匹配值的索引

不管是否存在重复值,都可以通过布尔掩码筛选后取index属性得到全量匹配索引:

import pandas as pd

# 示例含重复值的Series
s = pd.Series(["koala", "dog", "chameleon","dog"])
# 筛选所有值为dog的行,取索引
all_match_index = s[s == "dog"].index
print(all_match_index)
# 输出:Index([1, 3], dtype='int64')

如果是无重复值的场景,直接取下标0即可得到唯一索引:s[s == "dog"].index[0]

2. 获取指定值首次出现的索引

两种常用实现方式:

  • 调用idxmax()方法:布尔序列中True对应数值为1,第一次出现的最大值位置就是首次匹配的索引
first_index = (s == "dog").idxmax()
print(first_index)
# 输出:1
  • 直接取匹配索引列表的第一个元素
first_index = s[s == "dog"].index[0]

3. 获取指定值末次出现的索引

两种常用实现方式:

  • 反转序列后调用idxmax(),得到的就是原序列末次匹配的索引
last_index = (s == "dog")[::-1].idxmax()
print(last_index)
# 输出:3
  • 直接取匹配索引列表的最后一个元素
last_index = s[s == "dog"].index[-1]

注意事项

如果不确定目标值是否存在于Series中,建议先做存在性校验,避免索引为空时取下标抛出IndexError异常:

target = "dog"
if target in s.values:
    first_idx = s[s == target].index[0]
    last_idx = s[s == target].index[-1]
    print(f"首次出现索引:{first_idx},末次出现索引:{last_idx}")
else:
    print(f"Series中不存在值为{target}的元素")

以上方法兼容你使用的Python 3.9 + pandas环境,无需额外依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:24:04