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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:27:12