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
广告