如何在Rust的Polars中将DataFrame的列提取为Series?
提取Polars DataFrame中的列为Series
在Polars中,你可以通过两种常用方式提取指定列作为Series:
方法1:获取列的引用(不转移所有权)
使用column方法,它返回指定列的不可变引用,不会修改原DataFrame,适用于只读场景:
use polars::prelude::*; use polars_lazy::prelude::*; pub fn main() -> Result<(), PolarsError> { let df = df! ( "start" => &[3, 8, 5], "end" => &[6, 9, 7], "idx" => &[0, 1, 2], )?; // 提取"start"列的引用 let start_series = df.column("start")?; println!("{}", start_series); Ok(()) }
方法2:获取列的所有权(移除原DataFrame中的列)
如果需要独立拥有该列的所有权,可以使用take_column方法,注意此时DataFrame需要声明为可变:
use polars::prelude::*; use polars_lazy::prelude::*; pub fn main() -> Result<(), PolarsError> { let mut df = df! ( "start" => &[3, 8, 5], "end" => &[6, 9, 7], "idx" => &[0, 1, 2], )?; // 提取"start"列的所有权,原DataFrame将不再包含该列 let start_series = df.take_column("start")?; println!("{}", start_series); Ok(()) }
说明
column方法是最常用的选择,因为它不需要修改原DataFrame,性能更优。- 两个方法都会返回
Result<Series, PolarsError>,因此需要用?处理可能的错误(比如列名不存在)。
内容的提问来源于stack exchange,提问作者The Unfun Cat
相关产品推荐
相关产品推荐

