在Pandas DataFrame中识别重复项并分配相似索引
基于指定列识别重复行并分配统一索引
先看你的示例数据集:
import pandas as pd # Sample DataFrame with duplicate rows data = {'A': [1, 2, 1, 3, 1, 2, 3, 2], 'B': [4, 5, 4, 6, 4, 5, 6, 5], 'C': [1, 2, 3, 4, 5, 6, 7, 8]} df = pd.DataFrame(data)
要实现仅依据A、B列识别重复项,并给每组重复行分配相同自定义索引的需求,可用以下两种方法:
方法一:使用groupby.ngroup()
直接对A、B列分组,自动给每个组分配从0开始的连续索引:
# 基于A、B列分组,生成组索引 df['custom_index'] = df.groupby(['A', 'B']).ngroup() # 可选:将自定义索引设为DataFrame的行索引 df = df.set_index('custom_index')
运行后结果完全匹配需求:
- (A=1,B=4)的行(原行0、2、4)分配索引0
- (A=2,B=5)的行(原行1、5、7)分配索引1
- (A=3,B=6)的行(原行3、6)分配索引2
方法二:使用pd.factorize()
先提取A、B列的组合值,再生成唯一标识:
# 合并A、B列生成组合键,再生成索引 combined_key = df[['A', 'B']].apply(tuple, axis=1) df['custom_index'] = pd.factorize(combined_key)[0] # 可选:设置为行索引 df = df.set_index('custom_index')
两种方法效果一致,都能精准识别A、B列的重复组并分配统一索引。
内容的提问来源于stack exchange,提问作者Lopez
相关产品推荐
相关产品推荐

