Верните все строки, которые имеют хотя бы одно значение null в одном из столбцов, используя Polars.Python

Программы на Python
Anonymous
Верните все строки, которые имеют хотя бы одно значение null в одном из столбцов, используя Polars.

Сообщение Anonymous »

Мне нужны все строки, которые имеют значение NULL в одном из предопределенных столбцов.
Мне это в основном нужно, но у меня есть еще одно требование, которое я не могу понять.
Не обязательно каждый столбец должен быть проверено.
У меня есть функция, которая возвращает имена столбцов, которые необходимо проверить в списке.
Предположим, это мой фрейм данных:

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

data = pl.from_repr("""
┌───────┬───────┬─────┬───────┐
│ a     ┆ b     ┆ c   ┆ d     │
│ ---   ┆ ---   ┆ --- ┆ ---   │
│ str   ┆ str   ┆ str ┆ bool  │
╞═══════╪═══════╪═════╪═══════╡
│ abc   ┆ null  ┆ u   ┆ true  │
│ def   ┆ abc   ┆ v   ┆ true  │
│ ghi   ┆ def   ┆ null┆ true  │
│ jkl   ┆ uvw   ┆ x   ┆ true  │
│ mno   ┆ xyz   ┆ y   ┆ null  │
│ qrs   ┆ null  ┆ z   ┆ null  │
└───────┴───────┴─────┴───────┘
""")
Делаем

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

data.filter(polars.any_horizontal(polars.all().is_null()))
дает мне все строки, в которых любой из столбцов содержит значение NULL.
Иногда столбец c может содержать значение NULL< /code> так что не будем это проверять.
Я хочу вот этого:

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

┌───────┬───────┬─────┬───────┐
│ a     ┆ b     ┆ c   ┆ d     │
│ ---   ┆ ---   ┆ --- ┆ ---   │
│ str   ┆ str   ┆ str ┆ bool  │
╞═══════╪═══════╪═════╪═══════╡
│ abc   ┆ null  ┆ u   ┆ true  │
│ mno   ┆ xyz   ┆ y   ┆ null  │
│ qrs   ┆ null  ┆ z   ┆ null  │
└───────┴───────┴─────┴───────┘
Строка 3 не отображается, хотя в столбце c имеется нулевое значение.

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

columns = ["a", "b", "d"]
data.filter(polars.any_horizontal(polars.all(*columns).is_null()))
Это дает мне

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

polars.exceptions.SchemaError: invalid series dtype: expected 'Boolean', got 'str'
Я подумал, что, возможно, столбцы не выровнены или что-то в этом роде, потому что в данных больше столбцов, чем использует фильтр, поэтому я сделал это.

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

columns = ["a", "b", "d"]
# notice `.select(columns)` here
data.select(columns).filter(polars.any_horizontal(polars.all(*columns).is_null()))
Но по-прежнему возникает та же ошибка.
Как получить полные строки данных, содержащие ноль в одном из ["a", "b" ", "d"] столбцы


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

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