如何在Rust中按日期列拆分Polars DataFrame?
按日期拆分Polars DataFrame的正确方式
Polars的DataFrame类并没有partition_by方法,这就是你报错的原因。要按date列拆分数据为多个子DataFrame,推荐用以下两种实现方式:
1. 遍历分组拆分出子DataFrame
用group_by结合iter_groups可以直接拿到每个日期对应的子DataFrame,适合需要单独处理每日数据的场景:
import polars as pl # 读取CSV文件 df = pl.read_csv("your_dataset.csv") # 按date分组并迭代每个子DataFrame for date_key, daily_df in df.group_by("date").iter_groups(): # 执行按天的分析逻辑 print(f"日期 {date_key} 的数据量: {len(daily_df)}") # 示例:计算当日指标均值 daily_avg = daily_df.select(pl.col("metric").mean()) print(daily_avg)
2. 直接分组聚合(无需拆分)
如果你的目标是计算每日统计指标,不需要单独保留每个子DataFrame,直接用group_by+agg效率更高,避免额外内存开销:
daily_summary = df.group_by("date").agg( total_sales=pl.col("sales").sum(), avg_sales=pl.col("sales").mean(), customer_count=pl.col("customer_id").n_unique() ) print(daily_summary)
关于partition_by的补充
你可能混淆了Polars中LazyFrame的partition_by方法——它的作用是将数据按列分区写入磁盘(比如写入Parquet时按date生成分区文件夹),而非拆分内存中的DataFrame:
# 示例:按date分区写入Parquet文件 df.lazy().partition_by("date").write_parquet("daily_partitions", hive_partitioning=True)
内容的提问来源于stack exchange,提问作者Paz Marx
相关产品推荐
相关产品推荐

