1 数据连接 concat merge join (append 作为了解)
-
append 竖直方向追加, 在最新的pandas版本中已经被删除掉了, 这里推荐使用concat
1.1 pd.concat
两张表, 通过行名、列名对齐进行连接
import pandas as pd
df1 = pd.DataFrame([[1, 2, 3], [1, 10, 20], [5, 6, 7], [3, 9, 0], [8, 0, 3]], columns=['x1', 'x2', 'x3'])
df2 = pd.DataFrame([[1, 2], [1, 10], [1, 3], [4, 6], [3, 9]], columns=['x1', 'x4'])
pd.concat([df1, df2], axis=1)
pd.concat([df1, df2],join='inner')
axis=1 默认是0 , 上下连接, 用列名做对齐 = 1 左右连接 用行名对齐
join = 'inner' 默认 ‘outer’ outer 会保留连接的两张表的所有的信息, 有列名、行名不匹配的时候, 用NaN填充, 如果是inner 只会连接 行名、列名相同的部分
1.2 merge 连接 类似于SQL的join
# 写法1
df1.merge(df2, on='列名', how='固定值')
# 写法2
pd.merge(df1, df2, on='列名', how='固定值')
-
merge函数有2种常用参数,参数说明如下
-
参数
on='列名'
,表示基于哪一列的列值进行合并操作 -
参数
how='固定值'
,表示合并后如何处理行索引,固定参数具体如下:-
how='left'
对应SQL中的left join,保留左侧表df1中的所有数据 -
how='right'
对应SQL中的right join,保留右侧表df2中的所有数据 -
how='inner'
对应SQL中的inner,只保留左右两侧df1和df2都有的数据 -
how='outer'
对应SQL中的join,保留左右两侧侧表df1和df2中的所有数据
-
-
-
merge横向连接多个关联数据集具体使用
df3 = pd.merge(df1, df2, how='left', on='x1') df4 = pd.merge(df1, df2, how='right', on='x1') df5 =