You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何提取行内含KOTA/KAB的指定字符串并生成新列

实现方法

你原有代码的核心逻辑错误:

  • re.sub的作用是替换/删除匹配到的字符,和「提取指定片段存入新列」的需求完全相反
  • 逐行遍历pandas列的写法执行效率低,这类文本处理优先用pandas内置的向量化字符串操作

正确实现步骤

直接使用pandas的str.extract()方法,配合正则匹配目标规则,批量生成新列即可,不需要手写循环。

可直接运行的代码

import pandas as pd
import re

# 初始化测试数据集
testing = [['JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135'], 
           ['JL XXXX, KEC PORONG KAB SIDOARJO 61274'], 
           ['DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471']]
  
df_test = pd.DataFrame(testing, columns=['A'])

# 正则提取目标字段存入B列
# 正则规则说明:匹配独立单词KOTA/KAB + 空格 + 后续连续大写字母组成的地名
df_test['B'] = df_test['A'].str.extract(r'\b((?:KOTA|KAB) [A-Z]+)\b')

print(df_test)

运行输出效果

A                B
0  JL XXXX, KEC TAMBAKSARI KOTA SURABAYA 60135    KOTA SURABAYA
1       JL XXXX, KEC PORONG KAB SIDOARJO 61274     KAB SIDOARJO
2  DUSUN XXX, KEC SRONO KAB BANYUWANGI 68471   KAB BANYUWANGI

规则适配调整

如果后续遇到带空格的多段地名(比如KOTA BANDUNG SELATAN),可以把正则替换为r'\b((?:KOTA|KAB).*?)\s+\d{6}',逻辑为匹配KOTA/KAB开头的片段,直到遇到「空格+6位邮编」就终止匹配,兼容更复杂的地址格式。

内容的提问来源于stack exchange,提问作者MADFROST

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:09:24