Rust 如何在函数中修改极坐标 DataFrame,以便调用方看到更改?

Rust How to modify a polars DataFrame in a function, so that the caller see the changes?

提问人:Robert 提问时间:8/22/2022 更新时间:8/22/2022 访问量:342

问:

我迷失在可变的引用中......尝试将 DataFrame 发送到函数中...更改它并在函数调用完成后查看更改...

我收到错误:

不能借用为可变的

下面是一个代码示例:

use polars::prelude::*;
use std::ops::DerefMut;

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) {
    days.column("date_string").unwrap().rename("DATE-STRING)");
}

参考 可变 锈极

评论

0赞 E_net4 8/22/2022
请包含编译器中的完整错误消息

答:

1赞 isaactfa 8/22/2022 #1

的签名是column

fn column(&self, name: &str) -> Result<&Series, PolarsError>

它返回对列的共享引用。 有自己的重命名方法,您应该使用:DataFrame

use polars::df;
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).unwrap();

    assert_eq!(days.get_column_names(), &["DATE-STRING"]);
}

fn change(days: &mut DataFrame) -> Result<&mut DataFrame> {
    days.rename("date_string", "DATE-STRING")
}