如何将Pandas数据框中地址列最后逗号后的内容提取至新列
提取Pandas DataFrame中地址字段的邮政编码
嘿,我来帮你搞定这个提取邮政编码的问题!你用rsplit的思路其实是对的,只是可能没用到正确的参数来精准锁定最后一段内容。下面给你两种实用的解决方案:
方法一:用rsplit精准分割(推荐格式规范的场景)
rsplit(', ', n=1)会从字符串右侧仅做一次分割,这样就能把最后一个逗号前后的内容彻底分开,再取分割后列表的最后一个元素就是我们要的邮政编码:
# 新增PostCode列存储提取出的邮政编码 df_address['PostCode'] = df_address['CompanyAddress'].str.rsplit(', ', n=1).str[-1]
- 参数
n=1是核心:它限制只分割一次,完全避免前面的逗号干扰结果 str[-1]用来抓取分割后列表的最后一项,也就是目标邮政编码
方法二:正则表达式提取(适配空格不统一的复杂场景)
如果有些地址里逗号后的空格不固定(比如有的是, ,有的是多空格甚至无空格),用正则会更鲁棒:
# 用正则匹配最后一个逗号后的所有非逗号内容 df_address['PostCode'] = df_address['CompanyAddress'].str.extract(r',\s*([^,]+)$')
正则逻辑拆解:
,\s*:匹配逗号以及后面任意数量的空白字符(包括空格、制表符等)([^,]+)$:匹配从当前位置到字符串结尾的所有非逗号字符,精准锁定邮政编码- 括号
()用来捕获目标内容,str.extract会自动把捕获的内容生成新列
小补充
如果存在极少数地址没有逗号的情况,可以用fillna做兜底处理:
# 无逗号的地址直接保留原内容(或替换成缺失值,按需调整) df_address['PostCode'] = df_address['PostCode'].fillna(df_address['CompanyAddress'])
内容的提问来源于stack exchange,提问作者HDSci
相关产品推荐
相关产品推荐

