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

Pandas无分组生成连续行号及Numpy高性能实现问询

问题根因

你使用的代码输出全为1的原因非常明确:groupby('id_col')会按照唯一id列进行分组,由于id是唯一标识,每个分组仅包含1行数据。cumcount()的作用是返回分组内行的序号(从0开始计数),所有分组的返回值都是0,加1后自然全部为1,完全不满足全局连续行号的需求。

实现方案

1. Pandas原生实现

不需要使用分组逻辑,直接生成全局连续序列赋值即可:

# 方法1:直接通过range生成,适合原有索引无需保留的场景
df['row_num'] = range(1, len(df) + 1)

# 方法2:基于重置后的索引生成,兼容原有索引不连续、非数字的场景
df['row_num'] = df.reset_index(drop=True).index + 1

2. Numpy高性能实现(大数据量优先选择)

当DataFrame行数在10万级以上时,numpy方案的性能是纯pandas方案的2~5倍,实现代码如下:

import numpy as np
df['row_num'] = np.arange(len(df)) + 1

该方案直接在内存中生成连续整数数组,无额外的DataFrame结构操作开销,是所有可行方案中性能最优的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:27:03