我们怎样才能在重复的名字后面加上数字,然后用pandas上传到主excel文件中呢?

2024-04-26 03:17:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

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


Tags: 字符串代码namemasterdf数字collocation
1条回答
网友
1楼 · 发布于 2024-04-26 03:17:01

由于您不想为不重复的名称添加后缀,因此可以按NAME对数据进行分组,并得到两个序列
1) suffix:名称的实例号(将作为后缀)
2) repeats:重复实例(标识符是否添加后缀)

使用repeats,您可以决定是否将suffix添加到名称中

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_NAMENAMEsuffix的字符串串联,其中repeats大于1

结果:

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

相关问题 更多 >