Запретить приведение числовых типов к строке при замене определенных значенийPython

Программы на Python
Ответить
Anonymous
 Запретить приведение числовых типов к строке при замене определенных значений

Сообщение Anonymous »

У меня есть следующие данные:

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

import polars as pl

dat = pl.DataFrame({"x": ["a", "b"]})
и у меня есть функция, с помощью которой пользователь может заменить некоторые значения в x. Я хотел бы заранее совершить ошибку, если тип замены не соответствует типу существующих значений, например, если пользователь пытается заменить «a» на 1.
Все эти альтернативы приводят к принудительной замене () в строку:

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

dat.with_columns(y=pl.col("x").replace({"a": 1}))

dat.with_columns(
y=pl.col("x").replace_strict({"a": 1}, default=pl.col("x"), return_dtype=pl.String)
)

dat.with_columns(y=pl.when(pl.col("x") == "a").then(pl.lit(1)).otherwise(pl.col("x")))

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

shape: (2, 2)
┌─────┬─────┐
│ x   ┆ y   │
│ --- ┆ --- │
│ str ┆ str │
╞═════╪═════╡
│ a   ┆ 1   │
│ b   ┆ b   │
└─────┴─────┘
Дополнительная проблема заключается в том, что в определенной степени повышающее преобразование допустимо. Например, пользователь может предоставить Int64 для замены значения в столбце Int32, и столбец будет преобразован в Int64. В основном я хочу избежать приведения числовых значений к строкам или перечислениям.
Есть ли в Polars собственный способ предотвратить это? Было бы еще лучше, если бы решение включало только функции уровня Expr, а не функции уровня DataFrame.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ain-values
Ответить

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

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

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

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

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