rust - Polars Dataframe-基于一列删除重复行

标签 rust rust-polars

我只想在我的极坐标数据框中包含基于一列的唯一值。 在下面的示例中,我想创建一个新的数据框,其中仅包含基于“col_float”列的唯一值。

之前:

┬───────────┬──────────┬────────────┬────────────┐
┆ col_float ┆ col_bool ┆ col_str    ┆ col_date   │
┆ ---       ┆ ---      ┆ ---        ┆ ---        │
┆ f64       ┆ bool     ┆ str        ┆ date       │
╪═══════════╪══════════╪════════════╪════════════╡
┆ 10.0      ┆ true     ┆ 2020-01-01 ┆ 2020-01-01 │
┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
┆ 20.0      ┆ false    ┆ 2020-01-01 ┆ 2020-01-01 │
┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
┆ 20.0      ┆ true     ┆ 2020-01-01 ┆ 2020-01-01 │
┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
┆ 40.0      ┆ false    ┆ 2020-01-01 ┆ 2020-01-01 │
┴───────────┴──────────┴────────────┴────────────┘

之后:

┬───────────┬──────────┬────────────┬────────────┐
┆ col_float ┆ col_bool ┆ col_str    ┆ col_date   │
┆ ---       ┆ ---      ┆ ---        ┆ ---        │
┆ f64       ┆ bool     ┆ str        ┆ date       │
╪═══════════╪══════════╪════════════╪════════════╡
┆ 10.0      ┆ true     ┆ 2020-01-01 ┆ 2020-01-01 │
┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
┆ 20.0      ┆ false    ┆ 2020-01-01 ┆ 2020-01-01 │
┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
┆ 40.0      ┆ false    ┆ 2020-01-01 ┆ 2020-01-01 │
┴───────────┴──────────┴────────────┴────────────┘

(注意第三行被删除,因为 col_float 不是唯一的)

直觉上,我的尝试之一是:

let mut df = pl.DataFrame(
    {
        "col_float": [10.0, 20.0, 20.0, 40.0],
        "col_bool": [True, False, True, False],
        "col_str": pl.repeat("2020-01-01", 4, eager=True),
    };
let mut df2=DataFrame::new(vec![&df[0]]).unwrap();

df= df.unique(df2,UniqueKeepStrategy::First);

但得到:

expected `Option<&[String]>`, found `DataFrame`

这当然是事先预料到的。

我不确定我是否使用了正确的函数,如果使用了,应该如何传递这个子集。搜索文档或 github 并没有帮助我,因为在示例或代码中只有“None”作为子集传递。

最佳答案

似乎与极地相关的问题较少,但与我使用 Rust 的经验更相关。

工作示例:

let mut df = pl.DataFrame(
    {
        "col_float": [10.0, 20.0, 20.0, 40.0],
        "col_bool": [True, False, True, False],
        "col_str": pl.repeat("2020-01-01", 4, eager=True),
    };
df= df.unique(Some(&["col_float".to_string()]),UniqueKeepStrategy::First);

关于rust - Polars Dataframe-基于一列删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73361921/

相关文章:

input - 如何避免在 Rust 中使用 stdin 换行

rust - Cargo 命令打印目标文件列表?

python-polars - 窗口聚合一个值,但通过 Polars 返回另一个值

arrays - 此方法的返回类型是切片还是借用数组?

rust - 如何定义闭包类型以发送到线程安全

string - 为什么在 Rust 中将字符串的第一个字母大写如此复杂?

rust - 使用 Rust 中的 Polars 读取 CSV 并写入 Azure Data Lake 中的 Parquet

csv - 使用索引选择是 Polars : How to parse and transform (select/filter? 中的反模式)似乎需要这样的 CSV?

rust - 使用 Rust 中的 Polars 重新采样时间序列

rust - RUST 中的 POLARS 数据框内部 JOIN