You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polars rolling操作仅保留索引与分组列,如何保留全部原列?

保留Polars滚动聚合后的全部原列解决方案

问题背景

处理金融OHLC数据时,使用Polars的rolling().agg()方法生成滚动向前列表后,结果仅保留了Date、n和lists列,丢失了原DataFrame中的大部分字段,需要实现保留所有原列的需求。

解决方案

使用with_columns()方法替代直接调用rolling().agg(),将滚动聚合的结果作为新列添加到原DataFrame中,而非生成新的聚合DataFrame。

代码实现

pl.Config(fmt_str_lengths=100) # 调整输出字符串长度

out = ohlc.with_columns(
    lists = pl.col("Close").rolling(
        index_column='n',
        period='20i',
        offset='0i',
        group_by="Date"
    ).agg(pl.format("[{}]", pl.col("Close").str.join(",")))
)

原理说明

  • rolling().agg()方法本身会返回仅包含分组键、索引列及聚合结果的DataFrame,覆盖了原数据;
  • with_columns()方法则是在原DataFrame的基础上,新增指定的计算列,完整保留所有原有字段和数据结构,同时添加滚动聚合生成的lists列。

内容的提问来源于stack exchange,提问作者Ted Black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:47:06