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

如何按指定规则高效替换DataFrame中log_index列的值?

高效实现连续相同值块的顺序编号

核心思路

你的需求本质是对连续相同值的块进行顺序编号,而非全局唯一值映射。最高效的方式是利用pandas的向量化操作,避免Python循环,具体步骤为:

  • 标记每个连续块的起始位置(当前值与前一行不同时标记为True)
  • 对标记结果做累加,得到从1开始的连续编号

代码实现

import pandas as pd

# 构造示例DataFrame
data = {'log_index': [27,27,27,27,28,28,29,29,29,27,27,27,28,28,28]}
df = pd.DataFrame(data)

# 生成连续块编号
df['new_log_index'] = df['log_index'].ne(df['log_index'].shift()).cumsum()

print(df)

输出结果

log_index  new_log_index
0          27              1
1          27              1
2          27              1
3          27              1
4          28              2
5          28              2
6          29              3
7          29              3
8          29              3
9          27              4
10         27              4
11         27              4
12         28              5
13         28              5
14         28              5

效率说明

这种方法完全依赖pandas的底层向量化运算,没有Python层面的循环,在处理十万甚至百万级别的数据时,性能远高于自定义循环或apply方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:20:50