У меня есть этот фрейм данных:
Код: Выделить всё
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 │
└───────────────┴──────────────┴────────────────────────┘
Я придумал решение, которое использует функцию 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")
результирующий набор должен выглядеть так:
Код: Выделить всё
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 │
└───────────────┴──────────────┴────────────────────────┴───────────────────────────────────┘
thanks for reading!
Источник: https://stackoverflow.com/questions/781 ... d-function