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

Pandas中str.extract仅捕获首个匹配字符的问题求助

Pandas中str.extract仅捕获首个匹配字符的问题求助

嘿,我来帮你搞定这个问题~

你现在遇到的问题是str.extract只返回第一个匹配的字符,这是因为默认情况下它只会提取第一个匹配的捕获组,而且你的正则表达式[^W0-9-]本身就是匹配单个字符的,所以自然只能拿到第一个符合条件的字符。

要提取所有符合要求的字符并拼接成字符串,有两种简单的解决办法:

方法一:用str.findall + str.join

str.findall会找出字符串中所有匹配正则的字符,返回一个列表,之后我们用str.join('')把列表里的字符拼接成完整的字符串:

df["type"] = df["callsign"].str.findall(r'[^W0-9-]').str.join('')

方法二:用str.extractall + 分组聚合

str.extractall会提取所有匹配的捕获组,生成一个带多级索引的结果,之后我们按原行索引分组,把每组的匹配结果拼接起来:

df["type"] = df["callsign"].str.extractall(r'([^W0-9-])').groupby(level=0)[0].agg(''.join)

这两种方法都能帮你得到想要的结果:

callsigntype
1AB3-W9AB
23DC-W0DC

顺便再确认下你的正则逻辑:[^W0-9-]确实是匹配除了W、数字、横杠之外的所有字符,刚好符合你“捕获所有字母(除W)、排除数字和横杠”的需求~

备注:内容来源于stack exchange,提问作者Patty Jula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:58:15