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

Polars中如何为按多列排序的DataFrame设置set_sorted属性?

在Polars中处理多列排序的面板数据

1. 让Polars识别DataFrame按多列排序

你可以直接给set_sorted方法传入列名列表,告知Polars整个DataFrame是按id和date两列排序的:

import polars as pl

# 假设df是已排序的面板数据
df = df.set_sorted(["id", "date"])

设置后,Polars会在后续操作(如窗口计算、分组聚合)中利用这个排序信息,优化查询性能。

2. 判断多列是否单调递增

Polars没有直接对应Pandas中Index.is_monotonic_increasing的多列属性,但可以通过两种方式实现类似判断:

方式一:结构体整体判断

将id和date打包成结构体,再调用is_monotonic_increasing(),该方法会按结构体的字典序逐行比较:

is_sorted = pl.struct(["id", "date"]).is_monotonic_increasing().item()

返回的布尔值表示整个DataFrame的id-date组合是否整体单调递增。

方式二:分层次验证面板数据排序

对于面板数据,通常需要验证id整体递增,且每个id分组内的date也递增,这种方式更贴合面板数据的排序逻辑:

is_sorted = (
    (pl.col("id").is_monotonic_increasing()) &
    (pl.col("date").is_monotonic_increasing().over("id"))
).all().item()

先判断id列的单调性,再通过over("id")判断每个分组内date的单调性,最后用.all()确保所有行都满足条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45