You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polars:能否用1个with_columns和pl.when实现数值单位格式化?

Polars数值转带单位字符串的简化实现

简化代码(单with_columns+单pl.when)

可以将逻辑合并到一个with_columns调用中,通过在pl.when的分支里直接完成数值转换与字符串拼接,无需额外创建中间列:

sample.with_columns(
    pl.when(pl.col("a") >= 1000)
    .then((pl.col("a") / 1000).cast(pl.String) + pl.lit(" million"))
    .otherwise(pl.col("a").cast(pl.String) + pl.lit(" thousand"))
    .alias("a")
)

效率对比

Polars的表达式是向量化执行的,单pl.when方案与你原有的双pl.when方案性能差异极小:

  • 单pl.when方案少了一次with_columns调用和中间列的创建/删除步骤,在超大规模数据集下会有极轻微的性能优势;
  • 日常业务场景中,两者的执行效率几乎无差别,可根据代码可读性选择。

关于map_batches的说明

map_batches并不适合这个场景:它是逐批次调用Python逻辑,会打破Polars的向量化优化,反而降低执行效率。当前需求完全可以通过Polars内置的表达式实现,全程保持向量化执行,效率更高。

内容的提问来源于stack exchange,提问作者Victor Reial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:25:15