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

如何查找DataFrame列指定值最后出现位置并替换其后方的其他值

实现代码及说明

首先修正你现有代码的小疏漏:你的DataFrame列名为label,原有代码中df['labels']多了后缀s,调整后完整实现如下:

完整可运行代码

import pandas as pd

# 构造示例DataFrame,和你提供的样例一致
df = pd.DataFrame({
    'label': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'B', 'C']
})

# 1. 获取"A"最后一次出现的索引,你可以沿用自己的逻辑调整后使用:
last_a_idx = max(loc for loc, val in enumerate(df['label']) if val == 'A')

# 也可以用更简洁的pandas原生写法替代上面的索引获取逻辑,效果一致:
# last_a_idx = df[df['label'] == 'A'].index[-1]

# 2. 生成expected label列,将最后一个"A"之后的值替换为"H"
df['expected label'] = df['label']
df.loc[df.index > last_a_idx, 'expected label'] = 'H'

运行结果

执行后输出的df如下,符合你的需求:

label expected label
0      A              A
1      B              B
2      C              C
3      A              A
4      B              B
5      C              C
6      A              A
7      B              H
8      C              H
9      B              H
10     C              H

逻辑说明

  • 通过pandas的loc索引器筛选出所有索引大于最后一个"A"的索引的行
  • 直接对筛选出的行的expected label列批量赋值为H,pandas的广播特性会自动处理所有符合条件的行,无需循环遍历

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:36:06