cpca库实战应用

问题场景:

领导给了一个excel表格,里面有公司几百号员工的资料(如图),要根据详细地址分别统计出来,每个员工所属的省、市、区和具体地址,根据这个地址给每位员家属寄送一份中秋节礼品,表达公司心意,整理后的表格如下图:

整理前:

 

整理后:

 

 

 

解决思路:

1.在原表格中插入列:省、市、区、地址

2.按照excel表格 用for 循环遍历每一行

3.利用三方库cpca提取出来 省、市、区、地址

4.把省、市、区、地址 写入到excel表格对应的位置

5.保存输入表格

 

代码:

 

from openpyxl import load_workbook
wb=load_workbook('地址信息.xlsx')
ws=wb.active
for row in range(2,ws.max_row+1):
    cell=ws.cell(row=row,column=6)
    localtion_str=[cell.value]
    df = cpca.transform(localtion_str)
    ws.cell(row=row,column=2).value=df.iat[0,0]
    ws.cell(row=row,column=3).value=df.iat[0,1]
    ws.cell(row=row,column=4).value=df.iat[0,2]
    ws.cell(row=row,column=5).value=df.iat[0,3]
    
wb.save('地址信息new.xlsx')

 

 

看看新生成的表格:大功告成!cpca库很给力!

 知识点:

 cpca.transform(location_strs, index=None, pos_sensitive=False, umap={})

将地址描述字符串转换以"省","市","区"信息为列的DataFrame表格
Args:
    locations:地址描述字符集合,可以是list, Series等任意可以进行for in循环的集合
              比如:["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘西工业区"]
    index:可以通过这个参数指定输出的DataFrame的index,默认情况下是range(len(data))
    pos_sensitive:如果为True则会多返回三列,分别提取出的省市区在字符串中的位置,如果字符串中不存在的话则显示-1
    umap: 当只有区的信息时, 且该区存在同名时, 指定该区具体是哪一个,字典的 key 为区名,value 为 adcode, 比如 {"朝阳区": "110105"}
Returns:
    一个Pandas的DataFrame类型的表格,如下:
       |省    |市   |区    |地址                 |adcode   |
       |上海市|市辖区|徐汇区|虹漕路461号58号楼5楼   |310104 |
       |福建省|泉州市|洛江区|万安塘西工业区        |350504 |

 

posted @ 2021-08-26 16:57  像一无所有一样努力  阅读(889)  评论(0)    收藏  举报