下面我来详细讲解一下pandas中DataFrame数据合并连接的攻略。
1. 数据合并介绍
在实际的数据分析中,我们通常需要将多个数据源合并成一个数据源,这时就需要用到数据合并技术。在pandas库中,常用的数据合并方式有merge
、join
、concat
三种,下面分别介绍它们的用法。
2. merge合并
pandas中的merge()
函数是实现两张表之间的合并,类似于SQL中的JOIN操作。merge()
函数的基本语法为:pd.merge(left, right, how='inner', on=None)
,其中参数意义如下:
-
left
:需要合并的左侧DataFrame表。 -
right
:需要合并的右侧DataFrame表。 -
how
:合并方式,包括inner
、outer
、left
、right
四种。 -
on
:合并依据的列名,如果不指定则会自动寻找两个DataFrame中相同的列名作为连接键。
下面演示一个基本的merge()
合并实例:
import pandas as pd
# 构造两个DataFrame表
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})
# inner合并
res_inner = pd.merge(df1, df2, on='key', how='inner')
print(res_inner) # 输出合并后的表格
执行以上代码,输出如下:
key value_x value_y
0 B 2 5
1 D 4 6
上述结果表示基于列名为key
的内部2个表的合并结果。其中,value_x
是df1
表中的值,value_y
是df2
表中的值。如果两个表中没有相同的列,那么会返回空表。
3. join连接
join
方式和merge
方式类似,不过join
函数是在DataFrame对象上调用的。join()
函数的基本语法为:df1.join(df2, how='inner')
,其中参数意义如下:
-
df1
:需要连接的左侧DataFrame表。 -
df2
:需要连接的右侧DataFrame表。 -
how
:连接方式,包括inner
、outer
、left
、right
四种。
下面演示一个基本的join()
连接实例:
import pandas as pd
# 构造两个DataFrame表
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})
df2.set_index('key', inplace=True) # 将df2的键值设置为索引
# 内部连接
res_inner = df1.join(df2, how='inner', on='key')
print(res_inner) # 输出连接后的表格
执行以上代码,输出如下:
key value value
1 B 2 5
3 D 4 6
上述结果和merge()
函数的结果是一致的。
4. concat合并
concat()
函数将两个及以上的DataFrame表合并在一起,沿指定轴进行拼接。concat()
函数的基本语法为:pd.concat([df1, df2], axis=0)
,其中参数意义如下:
-
df1
:需要连接的第一个DataFrame表。 -
df2
:需要连接的第二个DataFrame表。 -
axis
:合并方向,包括0和1两种。0表示在行方向进行合并(垂直拼接),1表示在列方向进行合并(水平拼接)。
下面演示一个基本的concat()
合并实例:
import pandas as pd
# 构造两个DataFrame表
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['E', 'F', 'G', 'H'], 'value': [5, 6, 7, 8]})
# axis=0合并(垂直拼接)
res_row = pd.concat([df1, df2], axis=0)
print(res_row) # 输出合并后的表格
# axis=1合并(水平拼接)
res_column = pd.concat([df1, df2], axis=1, keys=['df1', 'df2'])
print(res_column) # 输出合并后的表格
执行以上代码,输出如下:
key value
0 A 1
1 B 2
2 C 3
3 D 4
0 E 5
1 F 6
2 G 7
3 H 8
df1 df2
key value key value
0 A 1 E 5
1 B 2 F 6
2 C 3 G 7
3 D 4 H 8
上述结果中,res_row
表示df1
和df2
在行方向上进行合并,res_column
表示df1
和df2
在列方向上进行合并。
5. 总结
以上就是pandas中DataFrame数据合并连接的技术攻略,主要包括merge()
、join()
、concat()
三种方式。在实际的数据分析中,不同的数据合并方式会根据具体需求进行选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas中DataFrame数据合并连接(merge、join、concat) - Python技术站