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可以保留被调用表中未出现在传入的参数表中的列,而不会设置为缺失值。

posted @ 2022-03-11 21:09  ikventure  阅读(121)  评论(0编辑  收藏  举报