python对excel表格里的重复数据进行编号

原表格数据如下

img


第二列有重复的数据,现在要对重复的数据进行编号,处理完后效果如下

img

不重复的数据不编号

最快是用pandas处理,读取excel,然后对数据处理就行了
具体可以参考:

先标记重复的列,再 apply 一个 handle 函数进行修改

import pandas as pd
import random as r

lis = list("甲乙丙丁戊己庚辛壬癸")

df = pd.DataFrame(data=[r.choice(lis) for i in range(10)], index=range(1, 11), columns=["data"])

df["bool"] = df.duplicated("data", keep=False)

d = {}


def handle(row, dic=d):
    if not row["bool"]:
        return row
    value = row["data"]
    if value in dic.keys():
        dic[value] += 1
    else:
        dic[value] = 1
    row["data"] = value + str(dic[value])
    return row


res = df.apply(handle, axis=1)
# res

import pandas as pd

df1=pd.read_excel(r'C:\Users\jackey\Desktop\CSDN/test.xlsx')

df=df1[['A']]

ds1=df.groupby(['A'])

df2=dict(list(ds1))

df_final=pd.DataFrame()

for i,j in df2.items():

    if len(j['A'])>=2:

        j.reset_index(inplace=True,drop = True)

        j['B']=j.index+1

        j['B']=j['B'].apply(str)

        j['A'] = j['A'].apply(str)

        j['A']=j['A']+j['B']

        j = j.drop(['B'], axis=1)

    df_final=df_final.append(j)

df_final.reset_index(inplace=True,drop = True)

print(df_final)

可以参考这个思路,可以实现。编号可以自己微调,比如加一列

df_final['编号']=df_final.index+1

A

0 丁
1 丙1
2 丙2
3 乙1
4 乙2
5 甲1
6 甲2

如果对你有帮助,帮忙采纳下,多谢!