最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

How to get all group in polars by rust? - Stack Overflow

programmeradmin1浏览0评论

In python, just like this

df = pl.DataFrame({"foo": ["a", "a", "b"], "bar": [1, 2, 3]})
for name, data in df.group_by("foo"):  
    print(name)
    print(data)

output:

(a,)
shape: (2, 2)
┌─────┬─────┐
│ foo ┆ bar │
│ --- ┆ --- │
│ str ┆ i64 │
╞═════╪═════╡
│ a   ┆ 1   │
│ a   ┆ 2   │
└─────┴─────┘
(b,)
shape: (1, 2)
┌─────┬─────┐
│ foo ┆ bar │
│ --- ┆ --- │
│ str ┆ i64 │
╞═════╪═════╡
│ b   ┆ 3   │
└─────┴─────┘

How to do same in rust?

In python, just like this

df = pl.DataFrame({"foo": ["a", "a", "b"], "bar": [1, 2, 3]})
for name, data in df.group_by("foo"):  
    print(name)
    print(data)

output:

(a,)
shape: (2, 2)
┌─────┬─────┐
│ foo ┆ bar │
│ --- ┆ --- │
│ str ┆ i64 │
╞═════╪═════╡
│ a   ┆ 1   │
│ a   ┆ 2   │
└─────┴─────┘
(b,)
shape: (1, 2)
┌─────┬─────┐
│ foo ┆ bar │
│ --- ┆ --- │
│ str ┆ i64 │
╞═════╪═════╡
│ b   ┆ 3   │
└─────┴─────┘

How to do same in rust?

Share Improve this question edited Mar 30 at 8:50 jqurious 22k5 gold badges20 silver badges39 bronze badges asked Mar 30 at 8:47 NyssanceNyssance 4115 silver badges9 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 4

This works a bit different in Rust, because a lazy DataFrame / LazyGroupBy is used here.
You can do something like this using the apply function:

use polars::prelude::*;

fn main() -> PolarsResult<()> {
    let df = df!(
        "foo" => &["a", "a", "b"],
        "bar" => &[1, 2, 3]
    )?;

    let groups = df.group_by(["foo"])?;
    groups.apply(|group| {
        let group_name =
            group.column("foo")?.str()?.get(0).ok_or_else(|| {
                PolarsError::ComputeError("Failed to retrieve group name.".into())
            })?;
        println!("{}", group_name);
        println!("{:?}", group);
        Ok(group)
    })?;

    Ok(())
}
发布评论

评论列表(0)

  1. 暂无评论