如何应用正则表达式替换Pandas DataFrame中的不规范省份名称
解决方法
我们可以通过pandas内置的字符串正则处理方法,先清除省份名称的前缀,再统一转为全大写实现标准化,完整可运行代码如下:
import pandas as pd # 构造原始DataFrame province = {'province':['Prov. Jawa Barat', 'JAWA BARAT', 'Prop. Jawa Barat', 'Prov. Sumarta Selatan', 'SUMARTA SELATAN', 'Prop. Sumatra Selatan'], 'city':['Bandung', 'Bogor', 'Cimahi', 'Palembang', 'Solo', 'Cilacap']} df_prov = pd.DataFrame(province) # 核心处理逻辑 # 1. 正则匹配删除开头的Prov.、Prop.前缀及后续空格 # 2. 统一转换为全大写,匹配标准命名 df_prov['province'] = df_prov['province'].str.replace(r'^(Prov|Prop)\.\s*', '', regex=True).str.upper() # 可选:修正原始数据中的拼写误差(Sumatra拼写为标准的Sumarta) df_prov['province'] = df_prov['province'].replace('SUMATRA SELATAN', 'SUMARTA SELATAN')
处理后province列的输出结果:
0 JAWA BARAT 1 JAWA BARAT 2 JAWA BARAT 3 SUMARTA SELATAN 4 SUMARTA SELATAN 5 SUMARTA SELATAN Name: province, dtype: object
正则说明
^:匹配字符串起始位置(Prov|Prop):匹配Prov或Prop两种前缀\.:匹配前缀后的英文句点\s*:匹配句点后可能存在的任意数量空格
内容的提问来源于stack exchange,提问作者Insan Cahya
相关产品推荐
相关产品推荐

