python - 我们如何将数字附加到重复的名称,并将它们与熊猫一起上传到主 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
它的代码是什么?你能帮我继续吗?
解决方案
由于您不希望为不重复的名称添加后缀,因此您可以将数据分组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
推荐阅读
- react-native - RN:如何将uri用于本地图像文件源
- python-3.x - 时间序列分析,选择最佳模型,python
- java - 如何 wait() 让小吃店 onDismissed 进程完成?
- android - Android Studio 3.4.1 中的“Profile or Debug APK...”选项消失在哪里?
- html - 从 CSS 网格中排除标题
- regex - `/[az]??/g` 和 `/[az]?/g` 有什么区别?他们会匹配一个位置吗?
- c++ - WinAPI ReadFile 返回损坏的数据
- python - 如何控制在 Python 中打开的进程数
- ionic-framework - 为什么 ionic www 文件夹显示空白内容
- php - WP + 店面无法使顶部标题导航和徽标响应