如何在Pandas中基于两列生成分组自增的唯一标识列
实现方案
1. Python(Pandas,效率最优,适合大数据量)
直接使用Pandas原生向量化分组计数方法,无循环开销,千万级数据量下也能保持极高处理效率:
import pandas as pd # 假设df为你的原始数据集 df['unique_id'] = df.groupby(['column_1', 'column_2']).cumcount() + 1
cumcount()会按原始表的行顺序,在每个column_1+column_2分组内从0开始计数,加1后即可得到你需要的从1开始的序列值。
2. SQL实现
如果数据存储在关系型数据库中,直接使用窗口函数即可:
SELECT column_1, column_2, ROW_NUMBER() OVER (PARTITION BY column_1, column_2 ORDER BY (SELECT 1)) AS unique_id FROM your_table;
ORDER BY (SELECT 1)是为了兼容要求窗口函数必须带排序规则的数据库(如SQL Server),如果使用MySQL 8.0+、PostgreSQL等支持省略排序规则的数据库,可直接去掉该段,保留原始表的行顺序。
3. R实现
使用dplyr包的分组行计数方法:
library(dplyr) df <- df %>% group_by(column_1, column_2) %>% mutate(unique_id = row_number()) %>% ungroup()
内容的提问来源于stack exchange,提问作者Stephen Strosko
相关产品推荐
相关产品推荐

