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

如何在Polars数据框中提取首个匹配的正则模式作为新列

如何在Polars数据框中提取首个匹配的正则模式作为新列

你好呀~你之前用str.contains得到布尔值是正常的,因为这个方法本来就是用来判断字符串是否包含指定模式的,而不是提取匹配的内容。要实现你想要的“提取首个匹配的正则模式”的需求,Polars里有个专门的方法——str.extract,正好能解决这个问题!

直接上代码示例,你可以这样写:

import polars as pl

df = pl.DataFrame({"col": ["row1", "row2", "row3"]})
# 使用str.extract提取首个匹配的模式
result = df.with_columns(new=pl.col('col').str.extract(r"1|2"))
print(result)

运行这段代码后,你就能得到想要的输出:

shape: (3, 2)
┌──────┬───────┐
│ col  ┆ new   │
│ ---  ┆ ---   │
│ str  ┆ str   │
╞══════╪═══════╡
│ row1 ┆ 1     │
│ row2 ┆ 2     │
│ row3 ┆ null  │
└──────┴───────┘

简单解释一下:

  • str.extract会在每个字符串中查找正则表达式的首个匹配项,返回匹配到的内容;
  • 如果没有找到任何匹配,就会返回null,完美符合你对row3的预期;
  • 如果你需要提取正则里的特定捕获组,还可以通过group参数指定(比如你的正则是row(\d),就可以用group=1来提取括号里的数字),不过在你的场景下,直接用1|2这种模式就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:49:51