Python ŌĆō 合并两个 Pandas DataFrame

Python ŌĆō 合并两个 Pandas DataFrame

在数据处理和分析中,经常需要进行数据合并操作。Pandas 是 Python 中非常常用的数据处理库,提供了丰富的数据处理和操作功能。在 Pandas 中,合并(merge)两个 DataFrame 是常用的操作。本文将介绍如何使用 Pandas 合并两个 DataFrame。

更多Pandas相关文章,请阅读:Pandas 教程

Pandas DataFram 介绍

Pandas 是 Python 中非常常用的数据处理库。Pandas 提供了两种主要的数据结构,Series 和 DataFrame。其中,DataFrame 可以看作是一个表格,一般有行和列两个维度。DataFrame 的每一列可以有自己的数据类型(例如整数、浮点数、字符串等),但不同列的数据类型需要相同。

下面是一个简单的示例,我们可以使用 Pandas 创建一个 DataFrame。首先,我们需要导入 Pandas 库:

import pandas as pd

然后,我们可以使用 Pandas 的 DataFrame 方法创建一个 DataFrame:

# 创建一个 DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [25, 30]})

上述代码中,我们先创建了一个字典,字典的 key 为列名,value 为该列的数据。然后,我们使用 DataFrame 方法将字典转换为 DataFrame。例如,上述代码中,name 和 age 就是 DataFrame 的两个列。

Pandas DataFrame 合并

在实际的数据处理中,我们需要经常合并两个或多个 DataFrame。Pandas 提供了三种合并 DataFrame 的方式,分别是 concat、merge 和 join。这里我们重点介绍 merge。

当我们对两个 DataFrame 进行合并时,需要指定合并的列,如果两个 DataFrame 的某个列值相同,该行才会被合并。如果两个 DataFrame 合并的列名不同,则需要使用 left_on 和 right_on 参数指定。

以下是一个简单的示例代码,合并两个 DataFrame:

# 创建两个 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B'], 'value': [4, 5]})

# 合并两个 DataFrame
df_merge = pd.merge(df1, df2, on='key')

# 打印合并结果
print(df_merge)

code language: python

上述代码中,我们创建了两个 DataFrame,一个包括三个键值对,另一个包括两个键值对。然后,我们对这两个 DataFrame 进行 merge 操作,合并的键值为 key,打印合并结果。

运行上述代码,结果如下:

  key  value_x  value_y
0   A        1        4
1   B        2        5

我们可以看到合并结果包括三列,其中 key 列是合并的键值,value_x 和 value_y 分别表示两个 DataFrame 的 value 列。

合并方式

merge 提供了几种合并方式,常用的有 inner、left、right 和 outer 四种。

  • inner:取两个 DataFrame 合并列的交集,只保留交集部分。
  • left:以左边 DataFrame 的合并列为基准,保留左边 DataFrame 的所有行,右边 DataFrame 中没有的数据位置用空值填充。
  • right:以右边 DataFrame 的合并列为基准,保留右边 DataFrame 的所有行,左边 DataFrame 中没有的数据位置用空值填充。
  • outer:取两个 DataFrame 合并列的并集,保留所有数据,数据位置没有对应值时用空值填充。

默认情况下,merge 使用 inner 合并方式。我们可以使用 how 参数指定合并方式。以下是一个简单的示例代码:

# 创建两个 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value: [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value': [4, 5, 6]})

# 使用不同的合并方式
df_inner = pd.merge(df1, df2, on='key')
df_left = pd.merge(df1, df2, on='key', how='left')
df_right = pd.merge(df1, df2, on='key', how='right')
df_outer = pd.merge(df1, df2, on='key', how='outer')

# 打印合并结果
print("Inner Merge:")
print(df_inner)

print("Left Merge:")
print(df_left)

print("Right Merge:")
print(df_right)

print("Outer Merge:")
print(df_outer)

code language: python

上述代码中,我们首先创建两个 DataFrame,然后针对这两个 DataFrame 使用了不同的合并方式。最后分别打印了合并结果。

输出结果如下:

Inner Merge:
  key  value_x  value_y
0   A        1        4
1   B        2        5
Left Merge:
  key  value_x  value_y
0   A        1      4.0
1   B        2      5.0
2   C        3      NaN
Right Merge:
  key  value_x  value_y
0   A      1.0        4
1   B      2.0        5
2   D      NaN        6
Outer Merge:
  key  value_x  value_y
0   A      1.0      4.0
1   B      2.0      5.0
2   C      3.0      NaN
3   D      NaN      6.0

我们可以看到,不同的合并方式得到的结果是不同的。Inner Merge 只保留了两个 DataFrame 的交集部分,Left Merge 以 df1 为基准,保留了 df1 的所有行;Right Merge 以 df2 为基准,保留了 df2 的所有行;Outer Merge 取两个 DataFrame 的并集,保留了所有数据。

指定多个合并列

有时候,我们需要指定多个合并列。例如,如果一个 DataFrame 包含了城市、州、国家的信息,而另一个 DataFrame 只包含了城市、国家的信息。那么我们可以使用多个列做为合并列。

以下是一个简单的示例代码,演示如何指定多个合并列:

# 创建两个 DataFrame
df1 = pd.DataFrame({'city': ['New York', 'Los Angeles', 'Chicago'], 
                    'state': ['NY', 'CA', 'IL'],
                    'country': ['USA', 'USA', 'USA'],
                    'value': [1, 2, 3]})
df2 = pd.DataFrame({'city': ['New York', 'Los Angeles', 'Chicago'], 
                    'country': ['USA', 'USA', 'USA'],
                    'value': [4, 5, 6]})

# 指定多个合并列
df_merge = pd.merge(df1, df2, on=['city', 'country'])

# 打印合并结果
print(df_merge)

code language: python

上述代码中,我们创建了两个 DataFrame,其中 df1 包含城市、州、国家的信息;df2 只包含城市、国家的信息。然后我们指定城市和国家两列作为合并列,使用 merge 进行合并,并打印合并结果。

输出结果如下:

          city state country  value_x  value_y
0     New York    NY     USA        1        4
1  Los Angeles    CA     USA        2        5
2      Chicago    IL     USA        3        6

我们可以看到,合并结果的 city 和 country 列是合并的两个列,其他列则是 df1 和 df2 的 value 列。

总结

本文介绍了 Pandas 中对两个 DataFrame 进行合并的操作。我们学习了如何使用 merge 方法进行 DataFrame 的合并,并了解了不同的合并方式和指定多个合并列的操作。在实际的数据处理和分析中,DataFrame 的合并是非常常见的操作,掌握 Pandas 中的合并操作可以大大提升数据处理和分析的效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 教程