Есть ли лучший способ вернуть каждый pl.element() в полярном списке только в том случае, если он соответствует элементу, содержащемуся в другом списке?
Хотя это работает, я считаю, что, вероятно, есть более краткий/лучший способ:
import polars as pl
terms = ['a', 'z']
(pl.LazyFrame({'a':['x y z']})
.select(pl.col('a')
.str.split(' ')
.list.eval(pl.when(pl.element().is_in(terms))
.then(pl.element())
.otherwise(None))
.list.drop_nulls()
.list.join(' ')
)
.collect()
)
shape: (1, 1)
┌─────┐
│ a │
│ --- │
│ str │
╞═════╡
│ z │
└─────┘
Ради потомков, он заменяет мою предыдущую попытку использовать .map_elements():
import polars as pl
import re
terms = ['a', 'z']
(pl.LazyFrame({'a':['x y z']})
.select(pl.col('a')
.map_elements(lambda x: ' '.join(list(set(re.findall('|'.join(terms), x)))),
return_dtype = pl.String)
)
._fetch()
)
Подробнее здесь: https://stackoverflow.com/questions/773 ... if-they-ma
Мобильная версия