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

Pandas的how="cross"合并是否保留左右DataFrame的行序?

Pandas cross merge的行序保留问题

结论

pd.merge(how="cross")同时保留左表和右表的原始行序,你所期望的结果是稳定且始终一致的,即使处理数十亿行数据也不会改变。

具体解释

官方文档提到的"preserves the order of the left keys",完整逻辑是:

  • 左表的行严格按照自身原始顺序依次参与笛卡尔积运算
  • 对于左表的每一行,都会与右表全部行按右表原始顺序进行匹配组合

所以在你的示例中,左表的a会先和右表的1、2、3(按右表原顺序)组合,接着是b和1、2、3组合,最后是c和1、2、3组合,完全符合你期望的输出结构。

验证示例

运行你提供的代码:

import pandas as pd
df1 = pd.DataFrame(["a", "b", "c"])
df2 = pd.DataFrame(["1", "2", "3"])
result = df1.merge(df2, how="cross")
print(result)

输出结果固定为:

0_x 0_y
0    a   1
1    a   2
2    a   3
3    b   1
4    b   2
5    b   3
6    c   1
7    c   2
8    c   3

这种行序稳定性是Pandas cross merge的设计特性,只要左、右表自身的行序未被打乱,结果的行序就会保持这个模式,不会随数据量变化而改变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:30:44