提问人:Thomas 提问时间:3/24/2023 更新时间:3/25/2023 访问量:2518
如何筛选到包含 Polars 列表中值的字符串行
How do I filter to rows of strings that contain a value from a list in Polars
问:
如果您有一个值列表和一个带有一列文本的 Polars 数据帧。并且您想仅筛选到包含列表中项目的行,您将如何编写?
a_list = ['a', 'b', 'c' ]
df = pl.DataFrame( {'col1': ['I am just a string', 'one more, but without the letters', 'we want, a, b, c,', 'Nothing here']} )
我认为它会有一些组合/使用 和 的东西,但我无法让它工作。.is_in(a_list)
.str.contains()
答:
0赞
Hussain Fakhruddin
3/24/2023
#1
要过滤 Polars 数据帧 df 中 col1 列包含列表a_list中的任何值的行,您可以使用 str.contains() 方法和 |运算符来检查多个值。下面是执行此操作的代码:
a_list = ['a', 'b', 'c']
df = pl.DataFrame({
'col1': ['I am just a string', 'one more, but without the letters', 'we want, a, b, c,', 'Nothing here']
})
mask = df.filter(pl.col('col1').str.contains('|'.join(a_list))
filtered_df = df[mask]
评论
pl.any
df.filter(pl.any(pl.col("col1").something() for value in values))
.any_horizontal()
df.filter(pl.any_horizontal(pl.col("col1").str.contains(s) for s in strings))