Polars DataFrame的partition_by是否保留组内行顺序?
Polars.DataFrame.partition_by 是否保留组内行顺序?
目前在Polars稳定版本中,partition_by 操作会保留每个组内的行顺序,与原DataFrame中行的出现顺序完全一致。
补充说明:
- 尽管官方文档未明确标注这一行为,但从
partition_by的实现逻辑来看,它仅负责将原数据集按分组键拆分为多个子DataFrame,不会对组内数据进行额外排序或重排操作。 - 你提供的测试代码也验证了这一点:分组后每个子DataFrame的
a列(对应原数据的顺序索引)始终保持有序,说明组内行的相对顺序完全继承自原数据。 - 对比
group_by:你提到group_by即使设置maintain_order=False仍保留组内顺序,这是因为该参数控制的是组之间的输出顺序,而非组内元素的顺序。partition_by的行为逻辑与此一致,仅做数据拆分,不干预组内顺序。
测试代码:
import polars as pl import numpy as np df = pl.DataFrame({ "a" : np.arange(100000000), "b": np.random.randint(0,50,100000000) }) all_dfs = df.partition_by("b", as_dict=True) for key, df in all_dfs.items(): assert df["a"].is_sorted()
内容的提问来源于stack exchange,提问作者jcsun
相关产品推荐
相关产品推荐

