Pandas中不同类型的join操作

Pandas模块包含各种功能,可以在数据框上执行各种操作,如join,concatenate,delete,add等。在本文中,我们将讨论可以在Pandas数据框上执行的各种类型的join操作。Pandas中有五种类型的Join。

为了理解不同类型的连接,我们将首先创建两个DataFrame,即a和b。

Dataframe a:

# importing pandas

import pandas as pd

# Creating dataframe a
a = pd.DataFrame()

# Creating Dictionary
d = {'id': [1, 2, 10, 12], 
	'val1': ['a', 'b', 'c', 'd']}

a = pd.DataFrame(d)

# printing the dataframe
a

在这里插入图片描述
DataFrame b:

# importing pandas
import pandas as pd
 
# Creating dataframe b
b = pd.DataFrame()
 
# Creating dictionary
d = {'id': [1, 2, 9, 8],
     'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)
 
# printing the dataframe
b

在这里插入图片描述

Pandas中的Joins类型

我们将使用这两个数据框来理解不同类型的连接。

Pandas 内连接

内连接是您将使用的最常见的连接类型。它返回一个Dataframe,其中只有那些具有共同特征的行。这类似于两个集合的交集。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd

# Creating dataframe a
a = pd.DataFrame()

# Creating Dictionary
d = {'id': [1, 2, 10, 12],
	'val1': ['a', 'b', 'c', 'd']}

a = pd.DataFrame(d)

# Creating dataframe b
b = pd.DataFrame()

# Creating dictionary
d = {'id': [1, 2, 9, 8],
	'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)

# inner join
df = pd.merge(a, b, on='id', how='inner')

# display dataframe
df

在这里插入图片描述
Pandas 左连接

使用左连接,将显示第一个数据框中的所有记录,而不管第一个数据框中的键是否可以在第二个数据框中找到。然而,对于第二个数据框,只有在第二个数据框中可以在第一个数据框中找到的键的记录才会显示。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd

# Creating dataframe a
a = pd.DataFrame()

# Creating Dictionary
d = {'id': [1, 2, 10, 12],
	'val1': ['a', 'b', 'c', 'd']}

a = pd.DataFrame(d)

# Creating dataframe b
b = pd.DataFrame()

# Creating dictionary
d = {'id': [1, 2, 9, 8],
	'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)

# left outer join
df = pd.merge(a, b, on='id', how='left')

# display dataframe
df

在这里插入图片描述
Pandas 右连接

对于右连接,将显示第二个DataFrame中的所有记录。但是,只有第一个数据框中的键可以在第二个数据框中找到的记录才会显示。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd

# Creating dataframe a
a = pd.DataFrame()

# Creating Dictionary
d = {'id': [1, 2, 10, 12],
	'val1': ['a', 'b', 'c', 'd']}

a = pd.DataFrame(d)

# Creating dataframe b
b = pd.DataFrame()

# Creating dictionary
d = {'id': [1, 2, 9, 8],
	'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)

# right outer join
df = pd.merge(a, b, on='id', how='right')

# display dataframe
df

在这里插入图片描述
Pandas全连接

一个全连接返回来自左边Dataframe的所有行,以及来自右边Dataframe的所有行,并在可能的情况下匹配行,在其他地方使用NaN。但是如果DataFrame是完整的,那么我们得到相同的输出。

在这里插入图片描述
示例:

# importing pandas
import pandas as pd

# Creating dataframe a
a = pd.DataFrame()

# Creating Dictionary
d = {'id': [1, 2, 10, 12],
	'val1': ['a', 'b', 'c', 'd']}

a = pd.DataFrame(d)

# Creating dataframe b
b = pd.DataFrame()

# Creating dictionary
d = {'id': [1, 2, 9, 8],
	'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)

# full outer join
df = pd.merge(a, b, on='id', how='outer')

# display dataframe
df

在这里插入图片描述

Pandas 索引连接

要在索引上合并数据框,请将left_index和right_index参数传递为True,即使用默认的Inner Join在索引上合并两个数据框。

# importing pandas
import pandas as pd

# Creating dataframe a
a = pd.DataFrame()

# Creating Dictionary
d = {'id': [1, 2, 10, 12],
	'val1': ['a', 'b', 'c', 'd']}

a = pd.DataFrame(d)

# Creating dataframe b
b = pd.DataFrame()

# Creating dictionary
d = {'id': [1, 2, 9, 8],
	'val1': ['p', 'q', 'r', 's']}
b = pd.DataFrame(d)

# index join
df = pd.merge(a, b, left_index=True, right_index=True)

# display dataframe
df

在这里插入图片描述

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值