Фильтрация списка на основе значений другого списка в PolarsPython

Программы на Python
Anonymous
 Фильтрация списка на основе значений другого списка в Polars

Сообщение Anonymous »

Предположим, у меня есть следующий DataFrame:

Код: Выделить всё

import polars as pl

df = pl.DataFrame({
'values': [[0, 1], [9, 8]],
'qc_flags': [["", "X"], ["T", ""]]
})

Код: Выделить всё

shape: (2, 2)
┌───────────┬───────────┐
│ values    ┆ qc_flags  │
│ ---       ┆ ---       │
│ list[i64] ┆ list[str] │
╞═══════════╪═══════════╡
│ [0, 1]    ┆ ["", "X"] │
│ [9, 8]    ┆ ["T", ""] │
└───────────┴───────────┘
Я хочу сохранить свои значения только в том случае, если соответствующий qc_flag равен "".

Код: Выделить всё

shape: (2, 2)
┌───────────┬───────────┐
│ values    ┆ qc_flags  │
│ ---       ┆ ---       │
│ list[i64] ┆ list[str] │
╞═══════════╪═══════════╡
│ [0]       ┆ ["", "X"] │
│ [8]       ┆ ["T", ""] │
└───────────┴───────────┘
Кто-нибудь знает, как правильно это сделать?
Я пробовал что-то вроде этого:

Код: Выделить всё

filtered = df.with_columns(
pl.col("values").list.eval(
pl.element().filter(
pl.col("qc_flags").list.eval(
pl.element() == ""
)
)
)
)
Я ожидал получить «значения»: [[0], [8]], но в итоге получаю следующую ошибку:

ComputeError: именованные столбцы не разрешены в функциях eval; рассмотрите возможность использования элемента


Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-polars

Вернуться в «Python»