我试着用rust中的polars做一个简单的过滤器:
let mask = df.column("AISLE_ID").unwrap().eq(lit(1));
let filtered_df = df.filter(&mask).unwrap();
但它根本不起作用:预期&ChunkedArray<...>
,找到&bool
我可以用lazy的方式来做,但我不想克隆 Dataframe
let dfe = df.clone();
let filtered_df = dfe.lazy().filter(
col("AISLE_ID").eq(lit(1))
)
.collect();
你能帮我吗?
1条答案
按热度按时间c86crjj01#
正如其他人提到的,无论何时执行
filter
,无论是否是惰性的,都会在创建新的DataFrame时执行数据的副本。不同之处在于何时执行复制(如果在惰性DataFrame的范围内发生多个转换,则会进行优化)。在最初的懒惰示例中,初始
let def = df.copy()
是不必要的。下面的代码按预期编译和工作:退货:
Cargo.toml: