我在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是什么,因为它们都是由内部连接函数构建的。所以请原谅缺乏背景信息
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']
,并且连接将基于您想要连接的方式在当前代码中考虑,
现在在你的程序中 第一行合并
['jdate','permco','me']
列上的A,B
,并创建一个新的数据帧A_B
,其中包含['jdate','permco','me',...'+columns_from_both_tables(A)(B)']
作为内部联接(即基于['jdate','permco','me']
列的a、B中的公共行)第二行从
A_B
数据帧中删除'me'
列。所以会是这样的['jdate','permco',...'+columns_from_both_tables(A)(B)']
第三行合并
['jdate','permco']
上的A_B,C
,并创建['jdate','permco',...'+columns_from_both_tables(A_B)(C)']
作为内部联接(即基于['jdate','permco','me']
列的A、B、C中通用的行)相关问题 更多 >
编程相关推荐