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