【pandas】第六章 连接
Datawhale的pandas学习的开源地址:Joyful Pandas
https://datawhalechina.github.io/joyful-pandas/build/html/%E7%9B%AE%E5%BD%95/ch1.html
欢迎大家关注了解Datawhale :)
目录
- 【pandas】第六章 连接
- 一、关系型连接
-
- 1. 连接的基本概念
- 2. 值连接
- 3. 索引连接
- 二、方向连接
-
- 1. concat
- 2. 序列与表的合并
- 三、类连接操作
-
- 1. 比较
- 2. 组合
一、关系型连接
1. 连接的基本概念
将两张表以某列为键,进行合成,pandas中可用函数有merge和join,它们均以how参数表示连接要求。
how='left’表示完全保存左表,匹配键保存右表
how='inner’表示只保留两表均有的键
注:两边同时出现的重复键以笛卡尔积形式加入
2. 值连接
这里主要学习几个重要参数
- left_on, right_on : 在两个表不具备相同的列名下定义左右表连接后的列名
- suffixes : 在两个表中有重复的列名下定义左右表连接后列名
用法:
df1.merge(df2, on=‘Name’, how=‘left’)
- on : 指定多个列完成对重复值的正确连接
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, 自定义处理两表的函数名)