import polars as pl
df = pl.DataFrame(
{
"subject": ["subject1", "subject2"],
"emails": [
["samATxyz.com", "janeATxyz.com", "jimATcustomer.org"],
["samATxyz.com", "zaneATxyz.com", "basATcustomer.org", "jimATcustomer.org"],
],
}
)
df
shape: (2, 2)
┌──────────┬─────────────────────────────────────────────────────────────────────────────┐
│ subject ┆ emails │
│ --- ┆ --- │
│ str ┆ list[str] │
╞══════════╪═════════════════════════════════════════════════════════════════════════════╡
│ subject1 ┆ ["samATxyz.com", "janeATxyz.com", "jimATcustomer.org"] │
│ subject2 ┆ ["samATxyz.com", "zaneATxyz.com", "basATcustomer.org", "jimATcustomer.org"] │
└──────────┴─────────────────────────────────────────────────────────────────────────────┘
Я хочу отфильтровать данные, чтобы столбец электронной почты содержал только электронные письма, заканчивающиеся на «ATxyz.com»..
shape: (2, 2)
┌──────────┬───────────────────────────────────┐
│ subject ┆ emails │
│ --- ┆ --- │
│ str ┆ list[str] │
╞══════════╪═══════════════════════════════════╡
│ subject1 ┆ ["samATxyz.com", "janeATxyz.com"] │
│ subject2 ┆ ["samATxyz.com", "zaneATxyz.com"] │
└──────────┴───────────────────────────────────┘
Как я могу сделать это с помощью поляров?
У меня было несколько идей, но я не могу определить правильный синтаксис, или он кажется более сложным/многословным, чем я ожидал:
- Может быть, я мог бы как-то фильтровать данные, используя .list.eval(pl.element() ..., но я не могу понять, как фильтровать элементы в списке с этим синтаксисом.
- Я мог бы изменить форму данных, используя .explode, но это кажется многословным и более сложным, чем нужно.
import polars as pl
df = pl.DataFrame(
{
"subject": ["subject1", "subject2"],
"emails": [
["samATxyz.com", "janeATxyz.com", "jimATcustomer.org"],
["samATxyz.com", "zaneATxyz.com", "basATcustomer.org", "jimATcustomer.org"],
],
}
)
df.with_columns(
pl.col("emails").list.eval(pl.element().str.contains("ATxyz")),
)
shape: (2, 2)
┌──────────┬────────────────────────────┐
│ subject ┆ emails │
│ --- ┆ --- │
│ str ┆ list[bool] │
╞══════════╪════════════════════════════╡
│ subject1 ┆ [true, true, false] │
│ subject2 ┆ [true, true, false, false] │
└──────────┴────────────────────────────┘
Подробнее здесь: https://stackoverflow.com/questions/790 ... ars-column