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

Polars左连接是否保证保留左表的行顺序?

关于Polars左连接保留左表顺序的问题

1. 左连接保留左表顺序的行为是否有官方保证?

Polars官方明确保证:使用how='left'的左连接会严格保留左表的原始行顺序。

左连接的设计逻辑就是以左表为基准,逐行匹配右表中的对应数据,因此左表的行顺序不会被打乱,这是Polars连接操作的既定特性,无需额外验证。

2. 安全实现的简便方法

推荐方式:直接使用左连接

就像你测试的那样,直接调用left.join(right, on='a', how='left')就足够了,官方已经确保顺序不会变。如果想让代码意图更明确,可以显式加上preserve_order=True参数(左连接下这个参数默认就是True,加不加不影响结果,只是让代码可读性更强):

left.join(right, on='a', how='left', preserve_order=True)

可选方式:模拟Pandas的reindex逻辑

如果需要完全复刻Pandas里reindex的思路,也可以先存下左表的a列值,连接后基于这个值重新索引:

# 先做左连接
joined_df = left.join(right, on='a', how='left')
# 按左表原始a值的顺序重新对齐
joined_df = joined_df.reindex(left['a'], on='a')

不过这种方法属于冗余操作,因为左连接已经保证了顺序,只在特殊场景下需要用到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:05:08