首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python和SQL的外连接给出了不同的结果。为什么?

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

Stack Overflow用户
提问于 2018-06-22 06:13:51
回答 1查看 115关注 0票数 2

我在理解Python (Pandas)完全外连接和Microsoft SQL Server之间的区别时遇到了一些困难。在不深入数据的情况下,也许有人理解它们如何不同地发挥作用的理论。我在学习Python的同时并行运行这两个代码,以确保它能正常工作。

SQL代码:

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
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),第二部分结果是SQL总共4951行,Python总共4552行。我想不出来。

一些提示:如果不转换int64, Python不会让我加入'idno‘。我以相同的方式对SQL和Python中的所有dfs进行排序,以控制排序。

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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-22 06:35:50

在您的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='outer')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50978136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档