欢迎访问宙启技术站
智能推送

在Python中使用Pandas.DataFrame进行数据合并和连接的方法

发布时间:2023-12-17 03:10:33

在Python中,可以使用Pandas包中的DataFrame对象进行数据合并和连接操作。DataFrame是一个二维表格数据结构,类似于Excel中的表格。下面是一些常用的合并和连接方法,以及相应的例子。

1. 数据合并:

数据合并是指将两个或多个数据集按行或按列进行合并,得到一个新的数据集。

1.1 按行合并:

使用concat函数可以按行合并两个DataFrame。下面的例子演示了如何按行合并两个DataFrame。

import pandas as pd

# 创建两个DataFrame
data1 = {'Name': ['Tom', 'Nick'], 'Age': [26, 28]}
df1 = pd.DataFrame(data1)

data2 = {'Name': ['John', 'Alice'], 'Age': [30, 24]}
df2 = pd.DataFrame(data2)

# 按行合并DataFrame
df = pd.concat([df1, df2], axis=0)
print(df)

输出结果为:

   Name  Age
0   Tom   26
1  Nick   28
0  John   30
1 Alice   24

1.2 按列合并:

使用merge函数可以按列合并两个DataFrame。下面的例子演示了如何按列合并两个DataFrame。

import pandas as pd

# 创建两个DataFrame
data1 = {'Name': ['Tom', 'Nick'], 'Age': [26, 28]}
df1 = pd.DataFrame(data1)

data2 = {'Salary': [3000, 4000]}
df2 = pd.DataFrame(data2)

# 按列合并DataFrame
df = pd.concat([df1, df2], axis=1)
print(df)

输出结果为:

  Name  Age  Salary
0  Tom   26    3000
1 Nick   28    4000

2. 数据连接:

数据连接是指根据某一列或多列的值,将两个或多个数据集进行连接。

2.1 内连接:

使用merge函数可以进行内连接操作。内连接会取两个数据集中共有的行。

import pandas as pd

# 创建两个DataFrame
data1 = {'Name': ['Tom', 'Nick'], 'Age': [26, 28], 'ID': [1, 2]}
df1 = pd.DataFrame(data1)

data2 = {'ID': [1, 3], 'Salary': [3000, 4000]}
df2 = pd.DataFrame(data2)

# 内连接DataFrame
df = pd.merge(df1, df2, on='ID', how='inner')
print(df)

输出结果为:

  Name  Age  ID  Salary
0  Tom   26   1    3000

2.2 左连接:

使用merge函数的how参数可以设置连接方式,左连接表示以左边的DataFrame为基准,取左边DataFrame的所有行,并与右边DataFrame中匹配的行进行连接。

import pandas as pd

# 创建两个DataFrame
data1 = {'Name': ['Tom', 'Nick'], 'Age': [26, 28], 'ID': [1, 2]}
df1 = pd.DataFrame(data1)

data2 = {'ID': [1, 3], 'Salary': [3000, 4000]}
df2 = pd.DataFrame(data2)

# 左连接DataFrame
df = pd.merge(df1, df2, on='ID', how='left')
print(df)

输出结果为:

  Name  Age  ID  Salary
0  Tom   26   1    3000
1 Nick   28   2     NaN

2.3 右连接:

右连接与左连接相反,表示以右边的DataFrame为基准,取右边DataFrame的所有行,并与左边DataFrame中匹配的行进行连接。

import pandas as pd

# 创建两个DataFrame
data1 = {'Name': ['Tom', 'Nick'], 'Age': [26, 28], 'ID': [1, 2]}
df1 = pd.DataFrame(data1)

data2 = {'ID': [1, 3], 'Salary': [3000, 4000]}
df2 = pd.DataFrame(data2)

# 右连接DataFrame
df = pd.merge(df1, df2, on='ID', how='right')
print(df)

输出结果为:

  Name   Age  ID  Salary
0  Tom  26.0   1    3000
1  NaN   NaN   3    4000

2.4 外连接:

外连接是左连接和右连接的综合,取两个DataFrame中的所有行,并根据列的值进行连接。

import pandas as pd

# 创建两个DataFrame
data1 = {'Name': ['Tom', 'Nick'], 'Age': [26, 28], 'ID': [1, 2]}
df1 = pd.DataFrame(data1)

data2 = {'ID': [1, 3], 'Salary': [3000, 4000]}
df2 = pd.DataFrame(data2)

# 外连接DataFrame
df = pd.merge(df1, df2, on='ID', how='outer')
print(df)

输出结果为:

  Name   Age  ID  Salary
0  Tom  26.0   1  3000.0
1 Nick  28.0   2     NaN
2  NaN   NaN   3  4000.0

总结:

Pandas中的DataFrame对象提供了丰富的方法来进行数据合并和连接操作。通过concat函数可以按行或按列合并数据集,通过merge函数可以进行不同类型的连接操作,包括内连接、左连接、右连接和外连接。合并和连接操作可以对多个数据集进行数据整合和分析,对数据分析和清洗非常有用。以上是常用的数据合并和连接方法,根据实际需求可以选择合适的方法进行操作。