以下重命名 Polars-Rust 数据框中的一列:
#![allow(unused_variables)]
use polars::prelude::*;
fn main() {
println!("Hello, world!");
let mut df = df! [
"names" => ["a", "b", "c"],
"values" => [1, 2, 3],
].unwrap();
println!("{:?}", df);
let new_name = <PlSmallStr>::from_str("letters");
let _ = df.rename("names", new_name);
println!("{:?}", df);
}
现在假设第一列的名称未知(例如,数据框是从 csv/excel 文件中读取的,其中没有名称),我想重命名它以便于将来使用:
fn main() {
println!("Hello, world!");
let mut df = df! [
"names" => ["a", "b", "c"],
"values" => [1, 2, 3],
].unwrap();
println!("{:?}", df);
let old_name = df.get_column_names_str()[0];
// let old_name = df.get_column_names_str()[0].clone();
// let old_name = &mut df.get_column_names_str()[0].clone();
// let mut old_name = &mut df.get_column_names_str()[0].clone();
let new_name = <PlSmallStr>::from_str("letters");
let _ = df.rename(old_name, new_name);
println!("{:?}", df);
}
这会导致错误
error[E0502]: cannot borrow `df` as mutable because it is also borrowed as immutable
--> src/main.rs:32:13
|
27 | let old_name = df.get_column_names_str()[0];
| -- immutable borrow occurs here
...
32 | let _ = df.rename(old_name, new_name);
| ^^^------^^^^^^^^^^^^^^^^^^^^
| | |
| | immutable borrow later used by call
| mutable borrow occurs here
For more information about this error, try `rustc --explain E0502`.
error: could not compile `rename_col` (bin "rename_col") due to 1 previous error
错误发生的原因或多或少是清楚的,但如何修复它并不清楚......
注释行显示了我解决这个问题的各种不成功的尝试。
相关:
在 Rust 中,如何重命名 Polars Dataframe 的所有列?
如何重命名 Polars 中第一行的列名?