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

如何为DataFrame重复项添加标记并解决输出顺序混乱问题

为DataFrame重复项添加索引编号的问题修正

问题描述

原始DataFrame:

Column_A
0   Kitten
1   Kitten
2     Judy
3     Lamb
4     Momo
5     Judy

期望生成包含索引编号的新列Column_B,结果如下(保留原始行顺序):

Column_B Column_A
0   Kitten_1   Kitten
1   Kitten_2   Kitten
2     Judy_1   Judy
3     Lamb_1   Lamb
4     Momo_1   Momo
5     Judy_2   Judy

注:你提供的期望结果中Momo _2应为笔误,修正为Momo_1。

原代码及错误结果

原代码:

import pandas as pd
# My dataframe
data = {'Column_A':['Kitten','Kitten','Judy','Lamb','Momo','Judy']}
df = pd.DataFrame(data)

df = df.sort_values("Column_A", axis = 0, ascending = False)

df_list = df['Column_A'].tolist()
df_list.sort()

new_df_list = list(set(df_list))
new_list = []
for k in new_df_list:
    ori_list = df[df["Column_A"] == k ]['Column_A'].tolist()
    number = len(ori_list)
    for n in range(number):
        new_list.append(k+'_'+str(n+1))
        print(k+'_'+str(n+1))
print(len(new_list))
new_list.sort(reverse=True)
new_DF=pd.DataFrame(new_list, columns = ['Column_B'])
final_df = pd.concat([new_DF,df],axis=1)
print(final_df)

运行后输出顺序混乱,结果:

Column_B Column_A
0    Momo_1   Kitten
1    Lamb_1   Kitten
2  Kitten_2     Judy
3  Kitten_1     Lamb
4    Judy_2     Momo
5    Judy_1     Judy

问题原因

  1. 多次调用排序方法(sort_values、df_list.sort、new_list.sort(reverse=True))彻底打乱了原始行的顺序
  2. 使用set去重会丢失原始数据的顺序,导致生成的Column_B无法和原Column_A正确对应

修正方案

利用Pandas内置的groupby+cumcount方法,无需手动循环和排序,直接保留原始顺序并生成索引编号:

import pandas as pd

# 创建原始DataFrame
data = {'Column_A':['Kitten','Kitten','Judy','Lamb','Momo','Judy']}
df = pd.DataFrame(data)

# 为每组重复项生成递增编号,并拼接成Column_B
df['Column_B'] = df['Column_A'] + '_' + (df.groupby('Column_A').cumcount() + 1).astype(str)

# 输出结果
print(df)

运行结果:

Column_A  Column_B
0   Kitten  Kitten_1
1   Kitten  Kitten_2
2     Judy    Judy_1
3     Lamb    Lamb_1
4     Momo    Momo_1
5     Judy    Judy_2

代码说明

  • df.groupby('Column_A').cumcount():按Column_A分组后,为每组内的行分配从0开始的序号
  • +1:将序号转为从1开始的计数
  • astype(str):将数字转为字符串,方便和Column_A的内容拼接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:05:34