提问人:Thomas 提问时间:10/30/2023 最后编辑:Thomas 更新时间:11/1/2023 访问量:63
从列表中找到的所有匹配子字符串组成 Polars 字符串列
Make column of all matching substrings from a list that are found within a Polars string column
问:
如何返回字符串中找到的所有匹配术语或子字符串的列?我怀疑有一种方法可以按照这些评论中的建议来做到这一点,但我无法完全将其拼凑在一起。pl.any_horizontal()
import re
terms = ['a', 'This', 'e']
(pl.DataFrame({'col': 'This is a sentence'})
.with_columns(matched_terms = pl.col('col').map_elements(lambda x: list(set(re.findall('|'.join(terms), x)))))
)
该列应返回:['a', 'This', 'e']
编辑:
这里的制胜解:与这个密切相关的问题的制胜解不同:因为没有获得列表元素的子字符串(例如部分的,而不是完整的单词)。.str.extract_all('|'.join(terms)).list.unique()
pl.col('col').str.split(' ').list.set_intersection(terms)
.set_intersection()
答: 暂无答案
评论
.str.extract_all
re.findall
pl.select(pl.lit('This is a sentence').str.extract_all('This|a|e'))
re.escape
regex::escape()
pl.lit(terms).str.regex_escape().str.concat("|")
.str.extract_all('|'.join(terms)).list.unique()
.set_intersection
.set_intersection()