Polars中df.unique()每次执行结果顺序不同是否为有意设计?
Polars中
unique()结果顺序不稳定的原因 这种顺序不稳定是Polars的有意设计,核心原因围绕性能优化展开:
- 哈希表实现的特性:
unique()默认基于哈希表来快速去重,而哈希表的遍历顺序本身不固定,取决于元素哈希值的分布以及底层存储结构,因此每次返回的去重结果顺序会存在差异。 - 优先保障大数据处理性能:Polars的定位是高效处理大规模数据集,强制固定顺序需要额外执行排序操作,会显著增加计算开销。默认不保证顺序,是为了避免这种不必要的性能损耗,让去重操作在大数据场景下保持最优速度。
- 可按需指定固定顺序:如果业务场景需要稳定的结果顺序,可以通过
maintain_order=True参数实现,该参数会保留重复项中首次出现的记录顺序,行为与pandas的df.drop_duplicates(keep='first')一致。
示例代码:
import polars as pl df = pl.DataFrame( { "X": [4, 2, 3, 4], "Y": ["p", "p", "p", "p"], "Z": ["b", "b", "b", "b"], } ) # 固定顺序的去重结果 print(df.unique(maintain_order=True))
输出结果稳定为:
X Y Z i64 str str 4 "p" "b" 2 "p" "b" 3 "p" "b"
内容的提问来源于stack exchange,提问作者Talha Tayyab
相关产品推荐
相关产品推荐

