首页 > 解决方案 > 我们如何将数字附加到重复的名称,并将它们与熊猫一起上传到主 excel 文件中?

问题描述

我有一个excel文件。我想查找列中是否有任何重复值,如果有,则应将数字 (1,2..) 附加到字符串中。我怎么能用熊猫做呢?

我能够找到重复值,但不知道如何更改这些字符串。必须在代码中添加什么?

master_location='C:/Users/Elite/Desktop/'+user+'/MeterMasterReport.xlsx'
require_col=[1,6,10,12,15,17]
master=pd.read_excel(master_location,header=3,usecols=require_col)
df=pd.DataFrame(master)
a=df.sort_values(by=['CIRCLE','DIVISION','SUBDIVISION','SECTION'])
duplicate=a[a.duplicated('NAME')]
for a in duplicate['NAME']:
    final_name=a+'1'
    print(final_name)

我得到了这个结果,它是带有数字的重复名称,如 *KARNE1、BAGWA1、..... 我如何在主工作表中更新它们?

KARNE1
BAGWA1
LEKNATH1
POKHARA1
BINDABASHINE1
ROYAL1

它的代码是什么?你能帮我继续吗?

标签: pythonexcelpandasnumpy

解决方案


由于您不希望为不重复的名称添加后缀,因此您可以将数据分组NAME并获得两个系列
1)suffix:名称的实例编号(这将是您的后缀)
2)repeats:重复实例(是否添加后缀的标识符)

使用repeats,您可以决定是否添加suffix到 NAME

import pandas as pd
import numpy as np
df=pd.DataFrame({'NAME':['A','A','B','C','D','D'],
                'DIVISION':['a','b','c','d','e','f'],
                'SUB_DIVISION':['m','n','o','p','q','r']
                })

name_groups = df.groupby('NAME')['NAME']
suffix = name_groups.cumcount()+1
repeats = name_groups.transform('size')

df['NEW_NAME'] = np.where(repeats > 1, df['NAME'] + suffix.map(str), df['NAME'])


NEW_NAME然后是一个字符串连接,NAME其中suffix大于repeats一个

结果:

df : 

  NAME DIVISION SUB_DIVISION NEW_NAME
0    A        a            m       A1
1    A        b            n       A2
2    B        c            o        B
3    C        d            p        C
4    D        e            q       D1
5    D        f            r       D2

推荐阅读