如何在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
相关产品推荐
相关产品推荐

