【问题标题】:Does Pandas "cross" merge keep order of both left and right?熊猫“交叉”合并是否保持左右顺序?
【发布时间】:2023-01-04 20:37:40
【问题描述】:

我想知道使用how="cross" 的合并操作是否会将我的行顺序保持在左侧和右侧,更清楚地说,我除了类似的东西:

df1 = pd.DataFrame(["a", "b", "c"])
df2 = pd.DataFrame(["1", "2", "3"])

df1.merge(df2, how="cross")

# I except the result to be ALWAYS like this (with 1, 2, 3 repeating) :

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 doc,他们说:

cross:从两个帧创建笛卡尔积,保留左键的顺序。

左键被保留,所以我应该假设右键顺序不是吗?

谢谢你的帮助

【问题讨论】:

  • 我假设右键顺序不是“嗯,在组合的第二个顺序中,总是 1/2/3、1/2/3、1/2/3

标签: python pandas


【解决方案1】:

右键的顺序保留在每组左键中。文档描述的是左键将是基本的命令。

例子:

df1 = pd.DataFrame(["c", "b", "a"])
df2 = pd.DataFrame(["1", "3", "2"])

df1.merge(df2, how="cross")

输出:

  0_x 0_y
0   c   1   # within a group
1   c   3   # the order is always
2   c   2   # 1 -> 3 -> 2
3   b   1
4   b   3
5   b   2
6   a   1
7   a   3
8   a   2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2019-10-30
    相关资源
    最近更新 更多