Pandas 之 merge

merge的作用:

merge函数在Python的pandas库中的作用是用来合并两个或多个DataFrame数据表,依据指定的一个或多个键(通常是列名)进行连接操作[1]。

merge函数可以有多种连接类型(如内连接inner、左连接left、右连接right、全连接outer)来组合多个DataFrame列表: 

inner:

内连接(inner join):仅返回键名在两个DataFrame中都存在的行

手动生成两个DataFrame对象

import pandas as pd
left = pd.DataFrame(data=[["K0","K0","A0","B0"], ["K0", "K1","A1","B1"], ["K1", "K0","A2","B2"], ["K2", "K1","A3","B3"]], columns=["key1", "key2","A","B"])
left
right = pd.DataFrame(data=[["K5","K0","C0","D0"], ["K1", "K0","C1","D1"], ["K1", "K0","C2","D2"], ["K2", "K1","C3","D3"]], columns=["key1", "key2","C","D"])
right

 

 

 内连接:

# inner
# F3
result = pd.merge(left,right,how="inner",on = ["key1", "key2"])
result

 

 代码F3讲解:

在此示例中,leftright是待合并的DataFrame,how='inner'用来指定连接方式on=['key1', 'key2']表示根据key1key2这两列进行连接。连接后的结果存储在新的DataFrame result 中

outer:

全连接: 返回左右DataFrame中所有键的所有行,任何一方没有匹配键的行都会用NaN填充缺失的数据。

# outer
# F4
result = pd.merge(left,right,how="outer",on = ["key1", "key2"])
result

 这个图不完整,刚才没有显示完但注释是对的。

 

完整的:

 

left:

左连接: 左连接同样基于键列,但其结果集包含了左DataFrame的所有行。对于这些行,如果它们在右DataFrame中找到匹配的键值,则会将右表对应列的值合并进来;若在右表中找不到匹配项,则相应的位置会被填充NaN或其他默认缺失值。这意味着左连接确保了左表的所有记录都会出现在结果集中。

# left
# F6
result = pd.merge(left,right,how="left",on = ["key1", "key2"])
result

right:

右连接:与左连接相反,右连接保证了右DataFrame的所有行都会出现在结果集中。每行右边数据表中的记录,如果有在左边数据表中匹配的键值,则会合并左表相应列的值;如果没有匹配项,则左边相关位置使用NaN填充。

# right
# F6
result = pd.merge(left,right,how="right",on = ["key1", "key2"])
result

 

 我的疑惑: 还是纵向和横向的问题,

这里的 how="left" 就已经指定了进行左连接操作,即保留 left DataFrame 中的所有行,并根据 key1 和 key2 列与 right DataFrame 进行匹配合并。

axis 参数并不适用于 pd.merge() 函数,它是用于像 pd.concat() 这样的函数,用于指定是沿着行(axis=0)还是列(axis=1)进行拼接操作。在做表连接时无需指定 axis 参数。所以,上述代码去掉 axis=1 后是正确的。


[1]通义千问(2024)AI文本提问.merge的作用https://tongyi.aliyun.com/qianwen/?sessionId=f78ee60c3a39451ca41740527b74eb3e通义千问 (aliyun.com)icon-default.png?t=N7T8https://tongyi.aliyun.com/qianwen/?sessionId=f78ee60c3a39451ca41740527b74eb3e 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值