我有这个数据框:
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 │
└───────────────┴──────────────┴────────────────────────┘
我想用sig_figs_len
列相应单元格中的匹配值来舍入reverse_rate_from_euro
中每个单元格中的值.
我提出了一个使用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")
有没有更好的解决方案,使用任何内置的Polars表达式API?
结果集应如下所示:
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 │
└───────────────┴──────────────┴────────────────────────┴───────────────────────────────────┘
任何输入都是高度赞赏! 感谢阅读!