Polars Rust按time列去重报错:未声明UniqueKeep类型
问题解答
是的,这个错误确实是缺少对UniqueKeep的导入导致的。
polars::prelude::*的默认导入集合并不包含UniqueKeep类型,所以即便你导入了prelude,也无法直接在代码中使用这个类型。
解决方法
方法1:显式导入UniqueKeep
在代码开头添加专门的导入语句:
use polars::frame::UniqueKeep;
之后就可以直接使用UniqueKeep::First或UniqueKeep::Last这类枚举值了。
方法2:使用完全限定路径
如果不想额外添加导入语句,可以直接用类型的完整路径来引用:
polars::frame::UniqueKeep::First
示例代码
以下是一个完整的可运行示例,演示按time列去重的正确写法:
use polars::prelude::*; use polars::frame::UniqueKeep; fn main() -> Result<(), Box<dyn std::error::Error>> { // 创建测试DataFrame let df = df!( "time" => ["2023-01-01", "2023-01-01", "2023-01-02", "2023-01-02"], "value" => [10, 20, 30, 40] )?; // 按time列去重,保留每组的第一行 let deduplicated_df = df.unique(["time"], Some(UniqueKeep::First))?; println!("去重后的DataFrame:\n{}", deduplicated_df); Ok(()) }
内容的提问来源于stack exchange,提问作者Arthur Zhang
相关产品推荐
相关产品推荐

