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

Polars中map_groups接收数据顺序及滚动回归的技术问询

关于Polars滚动窗口map_groups的排序问题解答

针对你提供的代码:

rolled = (
    joined.sort("thing", "date")
    .rolling("date", period="20d", group_by="thing")
    .map_groups(func, None)
)

问题1:map_groups是否按顺序接收DataFrame?

是的。这里的map_groups接收的是每个滚动窗口对应的子数据集,由于你提前对整个joined按thing和date做了全局排序,每个滚动窗口的子数据集会继承这个排序逻辑——同一thing分组内的窗口数据,行顺序始终和全局排序后的date升序保持一致。

问题2:上述代码中的func是否会接收按date排序的数据?

肯定会。全局sort("thing", "date")已经确保了:

  • 先按thing分组聚合
  • 每个thing组内的行严格按date从小到大排列

后续的rolling窗口基于这个已排序的数据集生成,所以每个传入func的窗口子DataFrame,内部行的date必然是升序状态。这正好满足你识别窗口最后一个date的需求——直接通过df["date"].iloc[-1]就能获取当前窗口的最后日期。

额外提示:如果需要进一步强化窗口内的排序稳定性,可以在rolling参数中添加by="date",不过基于你已有的全局排序操作,这一步并非必须。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 13:03:18