通过xpinyin模块,解决python中文排序问题

项目场景:

做基站退服报表真是个复杂的事情,365天*100年,天天如此,移动通信中3G\4G\5G各个厂家还不同,集中监控系统报表又不能满足实际工作需求,为了提高工作效率(主要是为了提升幸福指数),省去每天两小时的各种EXCEL操作(容易出错),硬着头皮,用自己三脚猫功夫,亲自动手......


问题描述

一来就遇到了困难。python通过pandas对基站退服报表中汉字字段【分公司】进行排序时,发现和习惯的排序方式不符,如下图所示:

import pandas as pd

data3G=pd.read_excel('data3G.xlsx')
data3G.sort_values(by=["分公司"],ascending=True,inplace=True)

data3G

原因分析:

pandas的sort_values可对英文和数字进行排序,但对汉字排序时不能按照我们的习惯(拼音顺序)正确排序。

解决方案:

对汉字进行排序,就是按照汉字的拼音顺序来排,基本思路是将汉字变成拼音并生成新字段,通过对新字段的排序实现【分公司】字段的汉字排序。将汉字转换为拼音有多种方法,本文通过xpinyin实现。

from xpinyin import Pinyin 
p = Pinyin()

pinyin_fgs = []

for i in data3G['分公司']:          
    result = p.get_pinyin(i,'')  #将分公司转换为拼音
    pinyin_fgs.append(result)
    
data3G['fgs'] = pinyin_fgs    #增加新的拼音字段

data3G

1、通过xpinyin不能对整列进行操作,所以只能通过 for循环来对每个值进行转换。

2、转换完成后,增加拼音形式的新字段【fgs】。

3、通过对字段【fgs】进行排序,间接完成了中文排序。

data3G.sort_values(by=['fgs'],ascending=True,inplace=True)
data3G

有情提示:xpinyin模块的基本作用是将汉字变为拼音,有多种用法,此处不再赘述。如为安装此模块,可以通过 pip install xpinyin 命令安装。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值