Как новые столбцы в полярах получают свои типы при использовании .when.then?Python

Программы на Python
Anonymous
 Как новые столбцы в полярах получают свои типы при использовании .when.then?

Сообщение Anonymous »

Новичок в полярах, использую последнюю версию 0.18.2
Я хочу добавить новый столбец в фрейм данных, используя pl.when.then.otherwise, но меня смущает, когда новый столбец «наследует» тип существующего, а когда нет.
Пример фрейма данных:

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

import polars as pl
df = pl.DataFrame({"a": ["x", "y"], "b": [1, 2]}, schema={"a": pl.String, "b": pl.String})
df
Out:
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ str ┆ u8  │
╞═════╪═════╡
│ x   ┆ 1   │
│ y   ┆ 2   │
└─────┴─────┘
Здесь новый столбец получает тот же тип (и имя), что и столбец b:

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

df.with_columns(
pl.when(pl.col("a") == "x")
.then(pl.col("b"))
.otherwise(5)
)
Out:
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ str ┆ u8  │
╞═════╪═════╡
│ x   ┆ 1   │
│ y   ┆ 5   │
└─────┴─────┘
Если я добавлю еще один «когда.то», новый столбец получит другой тип:

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

df.with_columns(
pl.when(pl.col("a") == "x")
.then(pl.col("b"))
.when(pl.col("a") == "y")
.then(0)
.otherwise(5)
)
Out:
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ str ┆ i32 │ # 

Подробнее здесь: [url]https://stackoverflow.com/questions/76457723/how-do-new-columns-in-polars-get-their-types-when-using-when-then[/url]

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