Pandas Join vs. Merge:有什么区别?

175 阅读2分钟

**join()merge()**函数都可以用来合并两个pandas DataFrames。

下面是这两个函数的主要区别。

  • **join()**函数通过索引合并两个DataFrames。
  • **merge()**函数通过你指定的任何列来组合两个DataFrames。

这些函数使用以下基本语法。

#use join() to combine two DataFrames by index
df1.join(df2)

#use merge() to combine two DataFrames by specific column name
df1.merge(df2, on='column_name')

在你知道你想按索引连接两个DataFrames的情况下,可以使用**join()**函数来节省一些输入。

下面的例子展示了如何在实践中使用每个函数。

例1:如何使用join()函数

下面的代码显示了如何使用**join()**函数来组合两个DataFrames。

import pandas as pd

#create two DataFrames
df1 = pd.DataFrame({'name': ['A', 'B', 'C'], 'points': [8, 12, 19]}).set_index('name')
df2 = pd.DataFrame({'name': ['A', 'B', 'C'], 'steals': [4, 5, 2]}).set_index('name')

#view two DataFrames
print(df1); print(df2)

      points                 steals
name                   name
A          8           A          4
B         12           B          5
C         19           C          2

#use join() function to join together two DataFrames
df1.join(df2)

	points	steals
name		
A	8	4
B	12	5
C	19	2

默认情况下,**join()**函数使用索引列将两个DataFrames连接在一起。

例2:如何使用merge()函数

下面的代码显示了如何使用**merge()**函数来合并两个DataFrames。

import pandas as pd

#create two DataFrames
df1 = pd.DataFrame({'name': ['A', 'B', 'C'], 'points': [8, 12, 19]}).set_index('name')
df2 = pd.DataFrame({'name': ['A', 'B', 'C'], 'steals': [4, 5, 2]}).set_index('name')

#view two DataFrames
print(df1); print(df2)

      points                 steals
name                   name
A          8           A          4
B         12           B          5
C         19           C          2

#use join() function to join together two DataFrames
df1.merge(df2, on='name')

	points	steals
name		
A	8	4
B	12	5
C	19	2

请注意,**merge()**函数返回了完全相同的结果,但我们必须明确告诉pandas使用'name'列连接DataFrames。

其他资源

你可以在这里找到**join()merge()**函数的完整在线文档。

join()函数的文档
merge()函数的文档

下面的教程解释了如何在pandas中执行其他常用函数。

如何向潘达斯数据框架添加行
如何向潘达斯数据框架添加标题行
如何获取潘达斯数据框架的第一行
如何获取潘达斯数据框架的第一列

The postPandas Join vs. Merge:首先出现在Statology