import pandas as pd
a = pd.read_excel('需改名数据.xlsx')
print(f'原始数据:{a}')
b = pd.read_excel('地名库.xlsx')
print(f'标准地名库:{b}')
for i in range(len(b)):
temp1 = b.loc[i, '区'] #取出标准区县名字
temp2 = b.loc[i, '市'] #取出标准市名字
for j in range(len(a)):
if a.loc[j, '地址'].find(temp1) >= 0: #如果在地址栏中找到标准区县名
a.loc[j, '完整地址'] = b.loc[i, '地址'] #完整地址拼接
for temp in a.loc[j, '地址'].split(temp1)[1:]: #防止地址中出现两次区县名,切割后成列表来循环拼接
a.loc[j, '完整地址'] += temp
elif a.loc[j, '地址'].find(temp2) >= 0:#如果在地址栏中未找到标准区县名,那查找标准市名,再做拼接
a.loc[j, '完整地址'] = b.loc[i, '省']+b.loc[i, '市']+a.loc[j, '地址'].split(temp2)[1]
print(f'查找后数据:{a}')
a.to_excel('result.xlsx', index=False) #输出
之前陷入了误区,不需要切割出区县、市,直接查找就行了,不过我用的方法比较笨,就是循环,没想到更好的办法,你给的数据115个能完成110个,数据多了估计速度会慢点,可以试试用多进程多线程之类的再做做
你的数据表,最好不要有空格空项,填完整,试试看 |