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

Rust中如何在函数内修改Polars DataFrame并让调用者看到变更?

问题分析与解决

你的代码存在两个关键问题,直接导致了"cannot borrow as mutable"错误:

  1. 列引用类型不匹配:days.column("date_string")返回的是不可变引用&Series,而rename方法需要可变引用&mut Series,因此无法调用该方法修改列名。
  2. 字符串语法错误:"DATE-STRING)"包含一个多余的右括号,属于语法层面的错误。

修正后的代码如下:

use polars::prelude::*;

fn main() {
    let mut days = df!(
        "date_string" => &["1900-01-01", "1900-01-02", "1900-01-03", "1900-01-04", "1900-01-05",
        "1900-01-06", "1900-01-07", "1900-01-09", "1900-01-10"])
    .unwrap();

    change(&mut days);

    println!("{:?}", days);
    
}

fn change(days: &mut DataFrame) {
    // 使用column_mut获取可变引用,同时修正字符串括号错误
    days.column_mut("date_string").unwrap().rename("DATE-STRING");
}

关键修正点:

  • 用column_mut替代column:该方法返回Result<&mut Series, PolarsError>,能拿到列的可变引用,满足rename方法对可变借用的要求。
  • 修正字符串语法错误:移除"DATE-STRING)"中多余的右括号,改为合法的字符串"DATE-STRING"。

修改完成后,函数可以成功修改传入的DataFrame列名,main函数打印的结果会显示变更后的列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:48:25