📜  连接 datfra,esin pandas - Python (1)

📅  最后修改于: 2023-12-03 15:41:55.842000             🧑  作者: Mango

连接 dataframes in pandas - Python

在数据分析和处理中,经常需要合并/连接多个数据集。Pandas库提供了多种方法来连接数据集。

1. 数据集介绍

我们将使用以下两个数据集进行演示:

import pandas as pd

# 创建数据集1
data1 = {'name': ['John', 'Mary', 'Peter', 'Jeff', 'Bill'],
         'age': [23, 21, 19, 30, 27],
         'country': ['USA', 'Canada', 'UK', 'France', 'Germany']}
df1 = pd.DataFrame(data1)

# 创建数据集2
data2 = {'name': ['John', 'Mary', 'Peter', 'Jeff', 'Steve'],
         'salary': [5000, 6000, 7000, 8000, 9000]}
df2 = pd.DataFrame(data2)
数据集1

| name | age | country | |------|----|--------| | John | 23 | USA | | Mary | 21 | Canada | | Peter | 19 | UK | | Jeff | 30 | France | | Bill | 27 | Germany |

数据集2

| name | salary | |------|-------| | John | 5000 | | Mary | 6000 | | Peter | 7000 | | Jeff | 8000 | | Steve | 9000 |

2. 连接数据集

下面是连接数据集的几种方法。

2.1 内连接

我们可以使用 merge() 函数来进行连接。内连接只保留两个数据集都有的行,并将它们组合起来。使用 merge() 函数时,我们需指定要连接的两个数据集,并指定连接列。

# 内连接
inner_join = pd.merge(df1, df2, on='name')
inner_join

Markdown中的表格显示如下:

| | name | age | country | salary | |---:|:-------|------:|:----------|---------:| | 0 | John | 23 | USA | 5000 | | 1 | Mary | 21 | Canada | 6000 | | 2 | Peter | 19 | UK | 7000 | | 3 | Jeff | 30 | France | 8000 |

2.2 左连接

左连接保留左侧数据集的所有行,并添加右侧数据集的匹配行,不匹配的用 NaN 填充。

# 左连接
left_join = pd.merge(df1, df2, on='name', how='left')
left_join

Markdown中的表格显示如下:

| | name | age | country | salary | |---:|:-------|------:|:----------|---------:| | 0 | John | 23 | USA | 5000 | | 1 | Mary | 21 | Canada | 6000 | | 2 | Peter | 19 | UK | 7000 | | 3 | Jeff | 30 | France | 8000 | | 4 | Bill | 27 | Germany | nan |

2.3 右连接

右连接保留右侧数据集的所有行,并添加左侧数据集的匹配行,不匹配的用 NaN 填充。

# 右连接
right_join = pd.merge(df1, df2, on='name', how='right')
right_join

Markdown中的表格显示如下:

| | name | age | country | salary | |---:|:-------|------:|:----------|---------:| | 0 | John | 23 | USA | 5000 | | 1 | Mary | 21 | Canada | 6000 | | 2 | Peter | 19 | UK | 7000 | | 3 | Jeff | 30 | France | 8000 | | 4 | Steve | nan | nan | 9000 |

2.4 外连接

外连接保留左右两个数据集的所有行,并将它们组合起来,不匹配的用 NaN 填充。

# 外连接
outer_join = pd.merge(df1, df2, on='name', how='outer')
outer_join

Markdown中的表格显示如下:

| | name | age | country | salary | |---:|:-------|------:|:----------|---------:| | 0 | John | 23 | USA | 5000 | | 1 | Mary | 21 | Canada | 6000 | | 2 | Peter | 19 | UK | 7000 | | 3 | Jeff | 30 | France | 8000 | | 4 | Bill | 27 | Germany | nan | | 5 | Steve | nan | nan | 9000 |

3. 总结

我们介绍了如何连接数据集。 pandas 提供的连接函数非常灵活,可以根据你的需求选择合适的方法。