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

如何在Pandas DataFrame中提取‘г.’与‘,’之间的内容?

提取Pandas地址列中「г.」与第一个「,」之间的内容

原始数据

用户的Pandas DataFrame地址列内容如下:

0                    г. Санкт-Петербург, ул. Карпинского,
1                   г. Челябинск, проспект Комсомольский,
2                         г. Екатеринбург, ул. Щербакова,
3             г. Санкт-Петербург, ул. Латышских Стрелков,
4       г. Москва, вн.тер.г. муниципальный округ Измай...

需求

提取每行中「г.」和第一个「,」之间的内容,预期结果:

0                   Санкт-Петербург
1                   Челябинск
2                   Екатеринбург
3                   Санкт-Петербург
4                   Москва

问题原因

你用的data['col'] = data['address'].str.extract('(г.*,)')不符合预期,是因为正则里的.*是贪婪匹配,会一直匹配到最后一个逗号前的所有内容,而非第一个逗号,导致结果包含多余字符。

正确解法

方法1:非贪婪正则匹配

使用非贪婪模式精准匹配到第一个逗号,同时排除「г.」本身:

data['col'] = data['address'].str.extract(r'г\.\s*(.*?)\,')
  • 细节解释:
    • г\.:匹配「г.」,.是正则特殊字符,需加转义符\
    • \s*:匹配「г.」后任意数量的空格(包括0个)
    • (.*?):非贪婪匹配任意字符,直到碰到第一个逗号
    • \,:匹配第一个逗号,转义避免与正则边界符混淆

方法2:字符串分割法

如果不想用正则,也可以用字符串分割实现:

data['col'] = data['address'].str.split(',', n=1).str[0].str.replace('г\. ', '')
  • 细节解释:
    • str.split(',', n=1):按第一个逗号分割成两部分,取前半段
    • str.replace('г\. ', ''):去掉开头的「г. 」(注意带空格)

两种方法都能精准提取到目标内容,不会受后续字符干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:15:34