Почему приведение столбца с числовым категориальным типом данных к целому числу в Polars приводит к неожиданному поведенPython

Программы на Python
Anonymous
Почему приведение столбца с числовым категориальным типом данных к целому числу в Polars приводит к неожиданному поведен

Сообщение Anonymous »

У меня есть категориальный столбец с именем decile в моем Polars DataFrame df со значениями в диапазоне от «01» до «10». При попытке преобразовать этот столбец в числовое представление с помощью:

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

df.with_columns(pl.col('decile').cast(pl.Int8))
, приведенные значения не сопоставляются должным образом (т. е. «01» не сопоставляется с 1 и т. д.), а диапазон теперь также от 0 до 9, а не от 1 до 10.
Странно то, что какими бы ни были исходные значения дециля столбца, они всегда будут неожиданно сопоставляться с [0, 9] при приведении к целочисленному типу данных. .
Я пытаюсь преобразовать значения в целочисленный тип данных для построения графиков.
Вот минимальный воспроизводимый пример:

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

size = 1e3
df = pl.DataFrame({
"id": np.random.randint(50, size=int(size), dtype=np.uint16),
"amount": np.round(np.random.uniform(10, 100000, int(size)).astype(np.float32), 2),
"quantity": np.random.randint(1, 7, size=int(size), dtype=np.uint16),
})
df = (df
.group_by("id")
.agg(revenue=pl.sum("amount"), tot_quantity=pl.sum("quantity"))
)
df = (df.with_columns(
pl.col('revenue')
.qcut(10, labels=[f'q{i:02}' for i in range(10, 0, -1)])
.alias("decile")
))
Как добиться правильного приведения (как и следовало ожидать, значения будут сопоставлены) и находиться в том же диапазоне, что и исходные значения?


Подробнее здесь: https://stackoverflow.com/questions/769 ... ger-in-pol

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