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

Python正则表达式提取子串:Pandas列特定字段提取失败问题

解决Pandas正则提取缺失RMK的问题

你的问题出在正则表达式的匹配要求上——原表达式r"\w*-NY-(.*?)-\w*"强制要求提取的内容后面必须跟着-和一组单词字符,但LOD-NY-RMK在RMK之后没有这部分内容,导致匹配失败返回NaN。下面给你两种高效的解决思路:

方法1:修改正则表达式(更灵活)

把正则改成匹配NY-之后到下一个-或字符串结尾的内容,这样不管后面有没有后续部分都能正确提取:

df['new_column'] = df['column'].str.extract(r"\w*-NY-([^-]+)", expand=False)

这里[^-]+表示匹配除了-之外的任意字符,直到遇到-或者字符串结束,完美覆盖两种格式的字符串。

或者也可以保留原结构,把后面的-\w*设为可选(用?标记非捕获组):

df['new_column'] = df['column'].str.extract(r"\w*-NY-(.*?)(?:-\w*)?", expand=False)

(?:-\w*)?表示这部分是可选的,匹配不到也不会影响前面的提取。

方法2:字符串分割(更简单)

因为你的所有字符串都是固定用-分隔,且目标内容是分割后的第3个元素(索引从0开始),直接用split更直观:

df['new_column'] = df['column'].str.split('-').str[2]

这种方法不需要正则,代码更简洁,对于这种固定格式的字符串效率也更高。

验证结果

两种方法运行后,new_column的结果都会是:

0     EP
1     EC
2     EC
3    LSM
4     PM
5     PM
6    RMK
7     EC
Name: new_column, dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:29:13