【pandas】第六章 连接
Datawhale的pandas学习的开源地址:Joyful Pandas
https://datawhalechina.github.io/joyful-pandas/build/html/%E7%9B%AE%E5%BD%95/ch1.html

欢迎大家关注了解Datawhale :)


一、关系型连接

1. 连接的基本概念

将两张表以某列为键,进行合成,pandas中可用函数有merge和join,它们均以how参数表示连接要求。

how='left’表示完全保存左表,匹配键保存右表
how='inner’表示只保留两表均有的键

注:两边同时出现的重复键以笛卡尔积形式加入
【pandas】第六章 连接_Pandas

2. 值连接

这里主要学习几个重要参数

  • left_on, right_on : 在两个表不具备相同的列名下定义左右表连接后的列名
    【pandas】第六章 连接_Pandas_02

  • suffixes : 在两个表中有重复的列名下定义左右表连接后列名

用法:
df1.merge(df2, on=‘Name’, how=‘left’)

【pandas】第六章 连接_Pandas_03

  • on : 指定多个列完成对重复值的正确连接
    【pandas】第六章 连接_Python开发_04

3. 索引连接

用法:
df1.join(df2, how=‘left’)

与merge原理一致,有on和how参数,可以对重复的列指定左右后缀 lsuffix 和 rsuffix

二、方向连接

1. concat

axis:默认0纵向拼接,1横向拼接
join:默认outer保留所有的列,inner保留均出现的列
keys:合并后的表定义其组成表的行索引

用法:
pd.concat([df1, df2], axis=1, join=‘inner’,keys=[‘one’,‘two’])

2. 序列与表的合并

concat 可以实现多个表之间的方向拼接,而
append 和 assign 可以实现把一个序列追加到表的行末或者列末

在 append 中,如果原表是默认整数序列的索引,那么可以使用 ignore_index=True 对新序列对应的索引自动标号,否则必须对 Series 指定 name 属性。

用法:
df1.append(s, ignore_index=True)

assign可以通过直接在原表中添加某一列实现,只不过注意将修改原表

三、类连接操作

1. 比较

compare比较两个表或者序列的不同处并将其汇总展示

用法:
df1.compare(df2)

2. 组合

combine

用法:
df1.combine(df2, 自定义处理两表的函数名)