我只想在我的极坐标数据框中包含基于一列的唯一值。 在下面的示例中,我想创建一个新的数据框,其中仅包含基于“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/