Условная замена полярных данных в PythonPython

Программы на Python
Ответить
Anonymous
 Условная замена полярных данных в Python

Сообщение Anonymous »

Я экспериментирую с фреймом данных Polars. В первом столбце хранятся строки или нулевые значения, во втором — числа или нулевые значения. Остальные — это столбцы с ненулевыми данными.

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

import polars as pl

df = pl.from_repr("""
┌─────────┬─────────┬─────────┐
│ Column1 | Column2 | Column3 │
│ ---     | ---     | ---     │
│ str     | i64     | str     │
╞═════════╪═════════╪═════════╡
│ foo     | null    | a       │
│ null    | null    | b       │
│ bar     | 1       | c       │
└─────────┴─────────┴─────────┘
""")
Я пытаюсь заменить нулевые значения фиксированным значением:

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

df = df.with_columns(pl.when(pl.col("Column1").is_null()).then(pl.lit("String"))
df = df.with_columns(pl.when(pl.col("Column2").is_null()).then(0))
Но я получаю:

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

shape: (3, 4)
┌─────────┬─────────┬─────────┬─────────┐
│ Column1 ┆ Column2 ┆ Column3 ┆ literal │
│ ---     ┆ ---     ┆ ---     ┆ ---     │
│ str     ┆ i64     ┆ str     ┆ i32     │
╞═════════╪═════════╪═════════╪═════════╡
│ foo     ┆ null    ┆ a       ┆ 0       │
│ null    ┆ null    ┆ b       ┆ 0       │
│ bar     ┆ 1       ┆ c       ┆ null    │
└─────────┴─────────┴─────────┴─────────┘
Вместо того, что я хочу:

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

shape: (3, 3)
┌─────────┬─────────┬─────────┐
│ Column1 ┆ Column2 ┆ Column3 │
│ ---     ┆ ---     ┆ ---     │
│ str     ┆ i64     ┆ str     │
╞═════════╪═════════╪═════════╡
│ foo     ┆ 0       ┆ a       │
│ String  ┆ 0       ┆ b       │
│ bar     ┆ 1       ┆ c       │
└─────────┴─────────┴─────────┘
Моя первоначальная идея взята из связанного поста «Условное присвоение в кадре данных Polars», но я не вижу своей ошибки. Что мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/751 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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