Использование значений столбца в функции округленияPython

Программы на Python
Anonymous
Использование значений столбца в функции округления

Сообщение Anonymous »


У меня есть этот фрейм данных:

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

shape: (5, 3)
┌───────────────┬──────────────┬────────────────────────┐
│ exchange_rate ┆ sig_figs_len ┆ reverse_rate_from_euro │
│ ---           ┆ ---          ┆ ---                    │
│ f64           ┆ u32          ┆ f64                    │
╞═══════════════╪══════════════╪════════════════════════╡
│ 6.4881        ┆ 5            ┆ 0.154128               │
│ 6.5196        ┆ 5            ┆ 0.153384               │
│ 6.4527        ┆ 5            ┆ 0.154974               │
│ 6.41          ┆ 3            ┆ 0.156006               │
│ 6.425         ┆ 4            ┆ 0.155642               │
└───────────────┴──────────────┴────────────────────────┘
Я хотел бы округлить значение в каждой ячейкеverse_rate_from_euro с соответствующим значением в соответствующей ячейке столбца sig_figs_len.
Я придумал решение, которое использует функцию apply/map_rows, но поскольку набор данных довольно большой и использование apply/pure Python не является идеальным оптимизированным решением, я хотел бы найдите лучшее решение.
Вот фрагмент:

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

df = df.with_columns(
(df.map_rows(lambda df_: round(df_[-1], df_[-2])))
.to_series()
.alias("reverse_rate_to_euro_rounded_sig_figs")
Есть ли лучшее решение, использующее любой из встроенных API выражений Polars?
результирующий набор должен выглядеть так:

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

shape: (5, 4)
┌───────────────┬──────────────┬────────────────────────┬───────────────────────────────────┐
│ exchange_rate ┆ sig_figs_len ┆ reverse_rate_from_euro ┆ reverse_rate_to_euro_rounded_sig… │
│ ---           ┆ ---          ┆ ---                    ┆ ---                               │
│ f64           ┆ u32          ┆ f64                    ┆ f64                               │
╞═══════════════╪══════════════╪════════════════════════╪═══════════════════════════════════╡
│ 6.4881        ┆ 5            ┆ 0.154128               ┆ 0.15413                           │
│ 6.5196        ┆ 5            ┆ 0.153384               ┆ 0.15338                           │
│ 6.4527        ┆ 5            ┆ 0.154974               ┆ 0.15497                           │
│ 6.41          ┆ 3            ┆ 0.156006               ┆ 0.156                             │
│ 6.425         ┆ 4            ┆ 0.155642               ┆ 0.1556                            │
└───────────────┴──────────────┴────────────────────────┴───────────────────────────────────┘
Any input is highly appreciated!
thanks for reading!


Источник: https://stackoverflow.com/questions/781 ... d-function

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