Pandas学习笔记 06 连接
第六章 连接 总结
1 关系型连接
1.1 连接的基本概念
类似SQL
连接,连接方式包括左连接left
、右连接right
、内连接inner
、外连接outer
。
同一表中键重复时以笛卡尔积方法连接。
1.2 值连接 merge
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
how
:指定连接方式(left, right, inner, outer, cross
)。
on
:指定连接的键。
left_on, right_on
:指定名称不同列的连接。
suffixes
:指定名称重复列的后缀。
注意:如果两个键列都包含该键为空值的行,则这些行将相互匹配。这与通常的SQL连接行为不同,可能会导致意想不到的结果。
1.3 索引连接 join
DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
how
:指定连接方式(left, right, inner, outer, cross
)。
on
:指定连接的键。
lsuffix, rsuffix
:指定名称重复列的后缀。
注意:如果需要指定列作为新表索引,需要set_index()
再使用join
。
df.set_index('key').join(other.set_index('key'))
# 或
df.join(other.set_index('key'), on='key')
2 方向连接
2.1 多表拼接concat
axis
:指定拼接方向,默认axis=0
,表示纵向拼接,多用于样本拼接;axis=1
表示横向拼接,常用于字段或特征拼接。
纵向拼接会根据列索引对齐,横向拼接回根据行索引对齐。
join
:指定连接方式,默认join=outer
,表示保留所有的列,将不存在的设为缺失;join=inner
表示保留两个表都出现过的列。
当确认要使用多表直接的方向合并时,尤其是横向的合并,可以先用reset_index
方法恢复默认整数索引再进行合并,防止出现由索引的误对齐和重复索引的笛卡尔积带来的错误结果。
keys
:产生多级索引对数据来源进行标记
2.2 序列与表的合并 append, assign
append
可以将序列添加到表行的末尾。
对于默认整数序列的索引,可以使用ignore_index=True
对新序列对应的索引自动标号,否则必须对Series
指定name
属性。
assign
可以将序列添加到表列的末尾。
均不会改动原表,只返回临时副本
3 类连接操作
3.1 比较compare
compare
:比较两个表或者序列的不同处并将其汇总展示。
compare
返回不同值所在的行列,如果相同则会被填充为缺失值NaN
。
设置keep_shape=True
可以完整显示所有元素的比较情况。
3.2 组合combine
combine
:将两张表按照一定的规则进行组合,规则以函数形式传入,进行规则比较时会自动进行列索引的对齐。
设置overtwrite
参数为False
可以保留被调用表中未出现在传入的参数表中的列,而不会设置为缺失值。