Полярные — использование pl.when для изменения в 2 столбцахPython

Программы на Python
Anonymous
Полярные — использование pl.when для изменения в 2 столбцах

Сообщение Anonymous »

У меня есть этот фрейм данных со значениями в тысячах и миллионах:
sample = pl.DataFrame({"a": [1, 6000, 7000, 2, 3, 8000, 4, 8000]})
shape: (8, 1)
┌──────┐
│ a │
│ --- │
│ i64 │
╞══════╡
│ 1 │
│ 6000 │
│ 7000 │
│ 2 │
│ 3 │
│ 8000 │
│ 4 │
│ 8000 │
└──────┘

Моя цель — получить этот фрейм данных:
shape: (8, 1)
┌──────────────┐
│ a │
│ --- │
│ str │
╞══════════════╡
│ 1.0 thousand │
│ 6.0 million │
│ 7.0 million │
│ 2.0 thousand │
│ 3.0 thousand │
│ 8.0 million │
│ 4.0 thousand │
│ 8.0 million │
└──────────────┘

Мне удалось получить желаемый результат. Однако я использовал 2 with_columns и 2 pl.when. У меня вопрос: можно ли сократить до 1 with_columns и 1 pl.when? Очевидно, ориентируясь на эффективность. Если есть другой способ или, по какой-то причине, 2 pl.when быстрее, меня это вполне устраивает.
Я видел некоторые решения с Map_batches, но они были с фиксированными значениями. Поэтому мне не удалось воспроизвести pl.col("a")/1000 с помощью map_batches.
Код, который дал мне результат:
sample.with_columns(
pl.when(pl.col("a") >= 1000)
.then(pl.lit(" million"))
.otherwise(pl.lit(" thousand"))
.alias("string")
).with_columns(
pl.when(pl.col("a") >= 1000)
.then(pl.col("a")/1000)
.otherwise(pl.col("a"))
.cast(pl.String)
+ pl.col("string")
).drop("string")


Подробнее здесь: https://stackoverflow.com/questions/758 ... -2-columns

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