关于wrds数据库的内部连接含义,我误解了什么?

2024-09-27 23:15:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在sql中学习了连接方法,我知道内部连接意味着只返回我们想要设置的两个不同表的交集

我认为python的概念是一样的。但是我在理解某些代码时遇到了问题

crsp1=pd.merge(crsp, crsp_maxme, how='inner', on=['jdate','permco','me'])

crsp1=crsp1.drop(['me'], axis=1)

crsp2=pd.merge(crsp1, crsp_summe, how='inner', on=['jdate','permco'])

如果我理解正确,第一行将表crsp和crsp_maxme与列“jdate”、“permco”、“me”上的交点合并。因此表crsp1将有3列。 第二行删除表crsp1的“me”列。 最后一个留置权将合并新调整的表crsp1和crsp_summe,并使用内部联接,在“jdate”和“permco”上具有交集。这使得新合并的表crsp2只有2列

然而,第2行的代码解释说,第二行和第三行从crsp1中删除“me”列,然后用crsp_summe表中的“me”替换它,我在理解上有问题

谁能帮我澄清一下这些台词吗

PS:我认为没有必要解释表crsp、crsp_summe和crsp_maxme是什么,因为它们都是由内部连接函数构建的。所以请原谅缺乏背景信息


Tags: 代码sqlonmergehowpdmeinner
1条回答
网友
1楼 · 发布于 2024-09-27 23:15:43

merge()函数on参数指定要进行连接的列how指定要应用的联接类型(类似于外部、内部、左侧、右侧等sql联接)

例: 假设有两个表A和B包含A['x1','x2','x3']B['x2','y1']列,那么基于'x1'(因为这是两个表中的公共列)连接它们将产生A_join_B_on_x1['A_B_x1','A_x2','A_x3','B_y1'],并且连接将基于您想要连接的方式

在当前代码中考虑,

A = crsp1
B = crsp_maxme
C = crsp_summe

现在在你的程序中 第一行合并['jdate','permco','me']列上的A,B,并创建一个新的数据帧A_B,其中包含['jdate','permco','me',...'+columns_from_both_tables(A)(B)']作为内部联接(即基于['jdate','permco','me']列的a、B中的公共行)

enter image description here

第二行从A_B数据帧中删除'me'列。所以会是这样的 ['jdate','permco',...'+columns_from_both_tables(A)(B)']

enter image description here

第三行合并['jdate','permco']上的A_B,C,并创建['jdate','permco',...'+columns_from_both_tables(A_B)(C)']作为内部联接(即基于['jdate','permco','me']列的A、B、C中通用的行)

enter image description here

相关问题 更多 >

    热门问题