Pandas 中如何合并数据框?


Pandas 是一个开源的 Python 库,它使用其强大的数据结构提供高性能的数据操作和分析工具。Pandas 中的数据框是一个二维数据结构,即数据以表格形式在行和列中对齐。

在本文中,我们将了解如何在 Python 中合并数据框。我们将使用 merge() 方法。以下是语法

dataframe.merge(right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)

这里,

参数 描述
right 要合并的 DataFrame 或 Series
how

'left'

'right'

'outer'

'inner': 默认

'cross'

如何合并。
on 字符串

列表

执行合并的级别
left_on 字符串

列表

在左侧 DataFrame 上执行合并的级别
right_on 字符串

列表

在右侧 DataFrame 上执行合并的级别
left_index

True

False

是否使用左侧 DataFrame 的索引作为连接键
right_index

True

False

是否使用右侧 DataFrame 的索引作为连接键
sort

True

False

是否按连接键对 DataFrame 进行排序
suffixes 列表 要为重叠列添加的字符串列表
copy

True

False

使用来自右侧数据框的键,使用 merge() 方法合并数据框

要合并数据框,我们将使用 merge() 方法。how 参数的 right 值仅使用右侧框架的键,类似于 SQL 右外部联接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method res = df1.merge(df2, how='right') print("\nCombined DataFrames = \n",res)

输出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
   Player  Age
0  Steve   31
1   Kane   27

使用来自左侧数据框的键,使用 merge() 方法合并数据框

要合并数据框,我们将使用 merge() 方法。how 参数的 left 值仅使用左侧框架的键,类似于 SQL 左外部联接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to left res = df1.merge(df2, how='left') print("\nCombined DataFrames = \n",res)

输出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
   Player  Age
0  Steve   29
1  David   25

合并来自两个数据框的键的并集的数据框

要合并数据框,我们将使用 merge() 方法。how 参数的 outer 值使用来自两个框架的键的并集,类似于 SQL 全外部联接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to outer i.e. res = df1.merge(df2, how='outer') print("\nCombined DataFrames = \n",res)

输出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
   Player  Age
0  Steve   29
1  David   25
2  Steve   31
3   Kane   27

合并来自两个数据框的键的交集的数据框

要合并数据框,我们将使用 merge() 方法。how 参数的 inner 值使用来自两个框架的键的交集,类似于 SQL 内部联接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to inner res = df1.merge(df2, how='inner') print("\nCombined DataFrames = \n",res)

输出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
Empty DataFrame
Columns: [Player, Age]
Index: []

合并来自两个数据框的笛卡尔积的数据框

要合并数据框,我们将使用 merge() 方法。how 参数的 cross 值创建来自两个框架的笛卡尔积

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to cross i.e. cartesian product res = df1.merge(df2, how='cross') print("\nCombined DataFrames = \n",res)

输出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25
DataFrame2 = 
    Player  Age
0   Steve   31
1   Kane    27Combined DataFrames = 
Player_x  Age_x Player_y  Age_y
0    Steve     29    Steve     31
1    Steve     29     Kane     27
2    David     25    Steve     31
3    David     25     Kane     27

更新于: 2022年9月15日

241 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告