项目场景:
做基站退服报表真是个复杂的事情,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 命令安装。