gpt4 book ai didi

Python 与 SQL 外连接给出不同的结果。为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 04:39:29 24 4
gpt4 key购买 nike

我无法理解 Python (Pandas) FULL OUTER JOINS 和 Microsoft SQL Server 之间的区别。在不研究数据的情况下,也许有人了解它们如何发挥不同作用的理论。在我学习 Python 的过程中,我并行运行这两个代码以确保其正常工作。

SQL 代码:

SELECT *
FROM
(
SELECT *
FROM df1 a
FULL OUTER JOIN df2 b
on a.id_no=b.idno
) abc
FULL OUTER JOIN df3 c
on abc.id_no=c.idno

Python 代码:

TripleMerge = df1.merge(df2, left_on='id_no', right_on=df2['idno'].astype(np.int64), how='outer').merge(
df3, left_on='id_no', right_on=df3['idno'].astype(np.int64), how='outer')

每个连接的第一部分给我相同的行数 (2323)第二部分结果总共有 4951 行 SQL 和 4552 行 Python。我想不通。

一些线索:Python 不允许我在不转换 int64 的情况下加入“idno”。我以相同的方式对 SQL 和 Python 中的所有 df 进行排序以控制排序。

如果您能想到任何可以调查的地方,请告诉我。或者,如果您知道如何更好地编写 Python 代码(或完全不同的方法来测试行输出,请告诉我)。

谢谢!

最佳答案

在您的 python 示例中没有与 abc 选择等效的内容。很确定您的语法在那里只是一点点。

在 SQL Server 中,您说的是进行此连接,然后将其连接到另一个表上的值。

试试这个:

pd.merge(pd.merge(df1,df2,left_on='id_no', right_on='idno', how='outer'),df3,left_on='id_no', right_on='idno',how= '外部')

关于Python 与 SQL 外连接给出不同的结果。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50978136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com