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

如何在Pandas中添加记录指定值最后出现索引的列

高效实现:为DataFrame添加指定值最后出现的索引列

针对你处理大型DataFrame时循环效率低的问题,可以用pandas的向量化操作来实现,时间复杂度为O(n),远快于循环方案。

实现步骤与代码

  1. 先构造示例DataFrame:
import pandas as pd

df = pd.DataFrame({0: [1,5,4,1,7,9]})
  1. 核心实现逻辑:
  • 先创建临时列,仅在原列值等于目标值(这里是1)时记录当前索引,其余位置设为NaN
  • 对临时列执行向前填充(ffill),这样每个位置都会继承最近一次出现目标值的索引
  • 将填充后的列作为新列加入原DataFrame

代码如下:

# 目标值
target = 1

# 创建临时列:匹配目标值时取索引,否则为NaN
temp_col = df.index.where(df[0] == target)

# 向前填充,得到每个位置最近的目标值索引
df[1] = temp_col.ffill()

执行后得到的结果完全符合你的需求:

0    1
0  1  0.0
1  5  0.0
2  4  0.0
3  1  3.0
4  7  3.0
5  9  3.0

如果需要整数类型,可以用df[1] = temp_col.ffill().astype(int)转换。

为什么这个方法高效?

pandas的where和ffill都是基于底层C实现的向量化操作,避免了Python循环的开销,处理百万级甚至更大的DataFrame时性能提升非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:05:26