Pandas中的数据帧如何合并?

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参数的右值仅使用右侧帧中的键,类似于SQL的右外连接。

示例

import pandas as pd

# 创建字典
dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]}
dct2 = {'Player':['Steve','Kane'], 'Age':[31,27]}

# 使用pandas.dataframe()从字典元素创建DataFrame
df1 = pd.DataFrame(dct1)
df2 = pd.DataFrame(dct2)
print("DataFrame1 = \n",df1)
print("\nDataFrame2 = \n",df2)

# 使用merge()方法组合DataFrame
res = df1.merge(df2, how='right')
print("\n合并后的DataFrame = \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()方法合并两个DataFrame,只使用左边DataFrame的键。

使用merge()方法合并DataFrame。左边参数的how参数值仅使用左侧表中的键,类似于SQL中的左外连接。

示例

import pandas as pd

# 创建字典
dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]}
dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]}

# 使用pandas.dataframe()方法从字典元素创建DataFrame
df1 = pd.DataFrame(dct1)
df2 = pd.DataFrame(dct2)
print("DataFrame1 = \n",df1)
print("\nDataFrame2 = \n",df2)

# 使用merge()方法合并DataFrame

# 将how参数设置为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

合并两个DataFrame的键的联合

使用merge()方法合并DataFrame。how参数的值为outer,合并两个表中的键的联合,类似于SQL中的全外连接。

示例

import pandas as pd

# 创建字典
dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]}
dct2 = {'Player':['Steve','Kane', 'Age':[31, 27]}

# 使用pandas.dataframe()方法从字典元素创建DataFrame
df1 = pd.DataFrame(dct1)
df2 = pd.DataFrame(dct2)
print("DataFrame1 = \n",df1)
print("\nDataFrame2 = \n",df2)

# 使用merge()方法合并DataFrame
# 将how参数设置为outer
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

# 创建字典
dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]}
dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]}

# 使用pandas.dataframe()从字典元素创建DataFrame
df1 = pd.DataFrame(dct1)
df2 = pd.DataFrame(dct2)
print("DataFrame1 = \n",df1)
print("\nDataFrame2 = \n",df2)

# 使用merge()方法合并数据帧
# how参数设置为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

# 创建字典
dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]}
dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]}

# 使用pandas.dataframe()从字典元素创建DataFrame
df1 = pd.DataFrame(dct1)
df2 = pd.DataFrame(dct2)
print("DataFrame1 = \n",df1)
print("\nDataFrame2 = \n",df2)

# 使用merge()方法合并DataFrame
# how参数设置为cross(即笛卡尔积)
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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程