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

如何在Polars Rust中使用with_column方法创建计算列

Polars Rust 基于现有列新增计算列实现方案(适配0.22.8版本)

前置配置

  • 表达式计算、col列引用方法默认不包含在基础功能中,需要在Cargo.toml中为polars依赖开启对应feature,否则无法找到col方法:
[dependencies]
polars = { version = "0.22.8", features = ["lazy", "dtype-i32", "dtype-str", "dtype-f64"] }
  • 你提供的示例代码存在基础语法错误:main函数定义缺少参数括号,example函数和main函数均缺少闭合花括号,且DataFrame相关操作均返回PolarsResult类型,需要做错误处理。

具体实现

with_column方法接收一个Polars表达式作为入参,使用方式和PySpark一致:用col("列名")引用已有列做算术/逻辑运算,最后通过.alias("新列名")指定生成列的列名即可。
如果需要计算浮点数比值,需要先把整数列转换为浮点类型,否则会执行整数除法丢弃小数部分。
完整可运行代码如下:

use polars::prelude::*;

fn example() -> PolarsResult<()> {
    let df = df![
        "foo" => ["A", "A", "B", "B", "C"],
        "val1" => [1, 2, 2, 4, 2],
        "val2" => [1, 2, 2, 4, 2],
    ]?;

    // 新增名为ration的计算列,存储val1/val2的浮点比值
    let df_res = df.with_column(
        (col("val1").cast(DataType::Float64) / col("val2").cast(DataType::Float64))
            .alias("ration")
    )?;

    println!("{}", df_res);
    Ok(())
}

fn main() -> PolarsResult<()> {
    example()
}

运行后输出结果会包含三列原始列+新增的ration列,你提供的测试数据下比值均为1.0。替换val2的测试值即可看到不同的计算结果,不需要浮点精度时删除.cast(DataType::Float64)转换逻辑即可,Polars会自动执行整数除法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:12:31