如何在Rust Polars中按日期列的小时筛选DataFrame?
问题解决:Polars中Date类型无法提取小时的错误
错误翻译
错误:无效操作——不支持对Date类型执行该操作
问题原因
Polars的Date数据类型仅存储年月日信息,不包含时分秒字段,因此无法直接调用.dt().hour()方法提取小时数。
解决方案
需要先将Date类型转换为包含时间信息的Datetime类型,再进行小时筛选。如果你的数据源本身就包含时分秒信息,建议一开始就将date列定义为Datetime类型,避免额外的类型转换操作。
修正后的代码示例:
use polars::prelude::*; let df = df.lazy().select([ col("value") .filter( col("date") // 将Date类型转为Datetime类型,时间单位可根据实际场景调整(如Seconds/Nanoseconds) .cast(DataType::Datetime(TimeUnit::Milliseconds, None)) .dt().hour() .gt(7) .lt(20) ) .alias("hours") .sum(), ]).collect()?;
内容的提问来源于stack exchange,提问作者Brucie Alpha
相关产品推荐
相关产品推荐

