pandas中merge()函数的用法解读
在pandas中,merge()
是一种数据合并函数,用于将两个或多个DataFrame按照某些条件进行连接,并生成一个新的DataFrame。本文将对merge()
函数中的参数进行详细讲解,并提供两个示例以说明其用法。
merge()函数的常用参数
-
left
:要合并的左侧DataFrame。 -
right
:要合并的右侧DataFrame。 -
how
:连接方式,可以选择inner
(默认)、outer
、left
或right
。 -
on
:合并的列名(左右两侧都需要用到的列名)或者类似于左侧DataFrame中一列的行索引。 -
left_on
:左侧DataFrame中用作合并键的列。 -
right_on
:右侧DataFrame中用作合并键的列。 -
left_index
:使用左侧DataFrame中的行索引作为连接键。 -
right_index
:使用右侧DataFrame中的行索引作为连接键。 -
suffixes
:用于重叠列的后缀添加元组。
示例1:合并两个DataFrame并以列的交集为合并键
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame(
{'id':[1,2,3,4,5],
'name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
result = pd.merge(left, right, on='subject_id')
print(result)
输出:
id_x name_x subject_id id_y name_y
0 2 Amy sub2 1 Billy
1 4 Alice sub6 1 Billy
2 5 Ayoung sub5 1 Billy
3 2 Amy sub2 2 Brian
4 4 Alice sub6 2 Brian
5 5 Ayoung sub5 2 Brian
6 3 Allen sub4 4 Bryce
7 3 Allen sub4 3 Bran
8 1 Alex sub1 2 Brian
解释:示例中分别创建了左、右两个DataFrame,然后使用merge()
函数将它们连接起来。由于subject_id
这一列在左、右两个DataFrame中都存在,因此以该列为合并键。连接方式为inner连接,即只将两个DataFrame在该合并键上具有公共值的行保留;若作为左或右侧DataFrame在该列上无公共值,则不予保留。
示例2:合并两个DataFrame并以行索引作为合并键
import pandas as pd
left = pd.DataFrame({
'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3'],
'C':['C0','C1','C2','C3'],
'D':['D0','D1','D2','D3']},
index=[0,1,2,3])
right = pd.DataFrame({
'A':['A4','A5','A6','A7'],
'B':['B4','B5','B6','B7'],
'C':['C4','C5','C6','C7'],
'D':['D4','D5','D6','D7']},
index=[4,5,6,7])
result = pd.merge(left, right, left_index=True, right_index=True)
print(result)
输出:
A_x B_x C_x D_x A_y B_y C_y D_y
0 A0 B0 C0 D0 A4 B4 C4 D4
1 A1 B1 C1 D1 A5 B5 C5 D5
2 A2 B2 C2 D2 A6 B6 C6 D6
3 A3 B3 C3 D3 A7 B7 C7 D7
解释:此示例中分别创建了两个DataFrame,并通过index
设定了行索引。使用left_index=True, right_index=True
来指定将两个DataFrame的行索引作为合并键。如此一来,结果DataFrame的行数与两个源DataFrame的行数取最小值,即为4。两个DataFrame的行是按照索引排序的,左侧DataFrame始终记录在_x
后缀列中,右侧DataFrame则以_y
作为后缀。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas中merge()函数的用法解读 - Python技术站