Pandas中不同类型的join操作

发布时间:2024年01月20日

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

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_42034590/article/details/134954077
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。