📜  Pandas merge()(1)

📅  最后修改于: 2023-12-03 14:45:02.717000             🧑  作者: Mango

Pandas merge()

Pandas merge()函数是Pandas库中最常用的函数之一,用于将不同数据集的数据以某种方式进行组合和合并,可根据一些相同的列或索引将它们连接到一起。数据合并是数据处理和分析过程中的重要步骤之一,因此掌握该函数使用方法非常必要。

使用方法

merge()函数的语法如下:

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
 left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), 
 copy=True, indicator=False, validate=None)

其中:

  • left、right: 需要合并的数据集
  • on: 指定连接的列名。两个数据集中都有的某一列名或者列名列表
  • left_on、right_on: 需要合并的左右数据集中所用来连接的列名,这两个参数分别指定了第一个df和第二个df需要进行拼接的字段名
  • left_index、right_index: 如果设置为True则使用索引进行连接而不使用列名。默认False
  • how: 拼接方式。有inner、outer、left、right,默认为inner。inner即为内连接,outer为外连接,left和right则是左连接、右连接
  • sort: 排序,默认为False
  • suffixes: 字符串类型的元组,表示如果两个数据集合并后,存在相同列名,那么在新的数据集中为每个相同字段分别追加一个标识符,默认为(‘_x’, ‘_y’)
  • copy: 是否复制数据,默认为True,即复制数据
  • indicator: 是否添加新的一列,默认为False,即不添加新的一列。添加新的一列后,可以知道合并后每一行的来源数据集
  • validate: string, 实现合并验证,可以分别验证左、右、内连接。允许值为“one_to_one”,“one_to_many”,“many_to_one”,“many_to_many”
示例

以下为一个简单的示例,对两个数据集进行内部连接(inner join):

import pandas as pd
  
# 定义第一个数据集
df1 = pd.DataFrame({
  'name': ['John', 'Tom', 'Sarah'],
  'age': [22, 25, 27],
  'gender': ['M', 'M', 'F']
})
  
# 定义第二个数据集
df2 = pd.DataFrame({
  'name': ['John', 'Tom', 'Anna'],
  'province': ['Shanghai', 'Beijing', 'Guangdong'],
  'income': [20000, 15000, 10000]
})
  
# Inner Join,以‘name’为关键字
df3 = pd.merge(df1, df2, on='name', how='inner')
  
print(df3)

执行以上代码,输出结果如下:

    name  age gender   province  income
0   John   22      M   Shanghai   20000
1    Tom   25      M    Beijing   15000

以上代码将根据这两个数据集中共同的名字列名进行连接,并显示他们的年龄,性别,省份和收入。因为只有 John 和 Tom 出现在两个表格中,所以只返回了两个记录。

总结

Pandas merge()函数是一个非常有用的函数,可用于合并不同的数据集,进而进行分析。在数据分析中,我们经常需要将多个数据表进行合并,这个时候,Pandas merge()函数是一个非常方便、实用的函数。使用merge()函数可能看起来有点复杂,但是只要理解了用法,你就会发现它是一个非常强大的工具,可以帮助你处理各种类型的数据。