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

Polars中列选择方式及with_columns调用方式的性能差异问询

Polars 性能疑问解答

1. pl.col() 和 DataFrame 索引列的性能差异

有明显差异,pl.col() 方式性能更优,原因如下:

  • Polars 的核心优化逻辑围绕表达式(Expression)展开,pl.col() 是原生表达式API,能完全融入Polars的查询优化器(比如谓词下推、列裁剪等),尤其是在**惰性模式(LazyFrame)**下,不会提前触发计算,所有操作会被整合成一个高效的查询计划后再执行。
  • 直接用 df["netsales"] 这种索引方式,本质是先从DataFrame中提取列对象再运算,在eager模式下会额外产生数据拷贝;如果是惰性模式,这种写法会强制触发部分 eager 计算,打断整个惰性优化链,导致性能下降。

大数据量场景下优先用 pl.col(),不仅性能好,代码风格也更符合Polars的最佳实践。

2. 一次性 vs 多次调用 with_columns 的性能差异

一次性调用性能更好,原因很直接:

  • 在eager模式下,每次调用 with_columns 都会遍历一次整个数据集,计算并添加新列;一次性调用的话,只需要遍历一次数据,就能完成所有新列的计算,减少了IO和遍历开销,数据量越大差异越明显。
  • 即使是惰性模式,一次性构建的查询计划更简洁,Polars的优化器能更高效地合并操作,避免不必要的中间步骤。

简单说:能一次加完的列就别分多次,省得重复跑数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:32:39