文章目录
- on的用法 一对一、一对多、多对多
- 一对一(数目不变)
- 一对多(数目以多的一边为准)
- 多对多关系(结果数量会出现乘法)
- how的用法
- inner 并集
- left 以左边为准
- righr 以右边为准
- outer 交集
- 非Key的字段(列)重名,
视频: https://www.bilibili.com/video/BV1Hh411D7WG?p=13
import pandas as pd
on的用法 一对一、一对多、多对多
一对一(数目不变)
left = pd.DataFrame({'学号': [11, 12, 13, 14],'姓名': ['name_a', 'name_b', 'name_c', 'name_d']})
left
|
学号
|
姓名
|
0
|
11
|
name_a
|
1
|
12
|
name_b
|
2
|
13
|
name_c
|
3
|
14
|
name_d
|
right = pd.DataFrame({'学号': [11, 12, 13, 14],'年龄': ['21', '22', '23', '24']})
right
|
学号
|
年龄
|
0
|
11
|
21
|
1
|
12
|
22
|
2
|
13
|
23
|
3
|
14
|
24
|
pd.merge(left, right, on='学号')
|
学号
|
姓名
|
年龄
|
0
|
11
|
name_a
|
21
|
1
|
12
|
name_b
|
22
|
2
|
13
|
name_c
|
23
|
3
|
14
|
name_d
|
24
|
一对多(数目以多的一边为准)
left = pd.DataFrame({'学号': [11, 12, 13, 14],'姓名': ['name_a', 'name_b', 'name_c', 'name_d']})
left
|
学号
|
姓名
|
0
|
11
|
name_a
|
1
|
12
|
name_b
|
2
|
13
|
name_c
|
3
|
14
|
name_d
|
right = pd.DataFrame ({'学号': [11, 11, 11, 12, 12, 13],'成绩': ['语文88', '数学90', '英语75','语文66', '数学55 ','英语29']})
right
|
学号
|
成绩
|
0
|
11
|
语文88
|
1
|
11
|
数学90
|
2
|
11
|
英语75
|
3
|
12
|
语文66
|
4
|
12
|
数学55
|
5
|
13
|
英语29
|
pd.merge(left,right,on = '学号'
)
|
学号
|
姓名
|
成绩
|
0
|
11
|
name_a
|
语文88
|
1
|
11
|
name_a
|
数学90
|
2
|
11
|
name_a
|
英语75
|
3
|
12
|
name_b
|
语文66
|
4
|
12
|
name_b
|
数学55
|
5
|
13
|
name_c
|
英语29
|
多对多关系(结果数量会出现乘法)
left = pd.DataFrame({'学号': [11, 11, 12, 12,12],'爱好': ['篮球', '羽毛球', '乒乓球', '篮球', "足球"]})
left
|
学号
|
爱好
|
0
|
11
|
篮球
|
1
|
11
|
羽毛球
|
2
|
12
|
乒乓球
|
3
|
12
|
篮球
|
4
|
12
|
足球
|
right = pd.DataFrame({'学号': [11, 11, 11, 12, 12, 13],'成绩': ['语文88', '数学90', '英语75','语文66', '数学55', '英语29']})
right
|
学号
|
成绩
|
0
|
11
|
语文88
|
1
|
11
|
数学90
|
2
|
11
|
英语75
|
3
|
12
|
语文66
|
4
|
12
|
数学55
|
5
|
13
|
英语29
|
pd.merge(left, right, on='学号')
|
学号
|
爱好
|
成绩
|
0
|
11
|
篮球
|
语文88
|
1
|
11
|
篮球
|
数学90
|
2
|
11
|
篮球
|
英语75
|
3
|
11
|
羽毛球
|
语文88
|
4
|
11
|
羽毛球
|
数学90
|
5
|
11
|
羽毛球
|
英语75
|
6
|
12
|
乒乓球
|
语文66
|
7
|
12
|
乒乓球
|
数学55
|
8
|
12
|
篮球
|
语文66
|
9
|
12
|
篮球
|
数学55
|
10
|
12
|
足球
|
语文66
|
11
|
12
|
足球
|
数学55
|
how的用法
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']})right = pd.DataFrame({'key': ['K0', 'K1', 'K4', 'K5'],'C': ['C0', 'C1', 'C4', 'C5'],'D': ['D0', 'D1', 'D4', 'D5']})
left
|
key
|
A
|
B
|
0
|
K0
|
A0
|
B0
|
1
|
K1
|
A1
|
B1
|
2
|
K2
|
A2
|
B2
|
3
|
K3
|
A3
|
B3
|
right
|
key
|
C
|
D
|
0
|
K0
|
C0
|
D0
|
1
|
K1
|
C1
|
D1
|
2
|
K4
|
C4
|
D4
|
3
|
K5
|
C5
|
D5
|
inner 并集
pd.merge(left, right, how='inner', on='key')
|
key
|
A
|
B
|
C
|
D
|
0
|
K0
|
A0
|
B0
|
C0
|
D0
|
1
|
K1
|
A1
|
B1
|
C1
|
D1
|
left 以左边为准
pd.merge(left, right, how='left', on='key')
|
key
|
A
|
B
|
C
|
D
|
0
|
K0
|
A0
|
B0
|
C0
|
D0
|
1
|
K1
|
A1
|
B1
|
C1
|
D1
|
2
|
K2
|
A2
|
B2
|
NaN
|
NaN
|
3
|
K3
|
A3
|
B3
|
NaN
|
NaN
|
righr 以右边为准
pd.merge(left, right, how='right', on='key')
|
key
|
A
|
B
|
C
|
D
|
0
|
K0
|
A0
|
B0
|
C0
|
D0
|
1
|
K1
|
A1
|
B1
|
C1
|
D1
|
2
|
K4
|
NaN
|
NaN
|
C4
|
D4
|
3
|
K5
|
NaN
|
NaN
|
C5
|
D5
|
outer 交集
pd.merge(left, right, how='outer', on='key')
|
key
|
A
|
B
|
C
|
D
|
0
|
K0
|
A0
|
B0
|
C0
|
D0
|
1
|
K1
|
A1
|
B1
|
C1
|
D1
|
2
|
K2
|
A2
|
B2
|
NaN
|
NaN
|
3
|
K3
|
A3
|
B3
|
NaN
|
NaN
|
4
|
K4
|
NaN
|
NaN
|
C4
|
D4
|
5
|
K5
|
NaN
|
NaN
|
C5
|
D5
|
非Key的字段(列)重名,
默认重名列加后缀
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']})right = pd.DataFrame({'key': ['K0', 'K1', 'K4', 'K5'],'A': ['A10', 'A11', 'A12', 'A13'],'D': ['D0', 'D1', 'D4', 'D5']})
left
|
key
|
A
|
B
|
0
|
K0
|
A0
|
B0
|
1
|
K1
|
A1
|
B1
|
2
|
K2
|
A2
|
B2
|
3
|
K3
|
A3
|
B3
|
right
|
key
|
A
|
D
|
0
|
K0
|
A10
|
D0
|
1
|
K1
|
A11
|
D1
|
2
|
K4
|
A12
|
D4
|
3
|
K5
|
A13
|
D5
|
pd.merge(left, right, on='key')
|
key
|
A_x
|
B
|
A_y
|
D
|
0
|
K0
|
A0
|
B0
|
A10
|
D0
|
1
|
K1
|
A1
|
B1
|
A11
|
D1
|
指定重名列 后缀
pd.merge(left, right, on='key',suffixes=('_left','_right') # 后缀名
)
|
key
|
A_left
|
B
|
A_right
|
D
|
0
|
K0
|
A0
|
B0
|
A10
|
D0
|
1
|
K1
|
A1
|
B1
|
A11
|
D1
|
pandas 实现DataFrame的合并Merge相关推荐
- python DataFrame数据合并 merge()、concat()方法
文章目录 merge() 1.常规合并 ①方法1 ②方法2 重要参数 合并方式 left right outer inner 准备数据' inner(默认) outer left right 2.多对 ...
- Pandas 中DataFrame 数据合并 Contract | Merge
最近在工作中,遇到了数据合并.连接的问题,故整理如下,供需要者参考~ 参考自:象在舞:https://blog.csdn.net/gdkyxy2013/article/details/80785361 ...
- pandas之DataFrame合并merge
一.merge merge操作实现两个DataFrame之间的合并,类似于sql两个表之间的关联查询.merge的使用方法及参数解释如下: pd.merge(left, right, on=None, ...
- python column stack_Python基础 | pandas中dataframe的整合与形变(merge reshape)
[toc] 本文示例数据下载,密码:vwy3 import pandas as pd # 数据是之前在cnblog上抓取的部分文章信息 df = pd.read_csv('./data/SQL测试用数 ...
- python dataframe合并相同行_pandas之DataFrame合并merge
一.merge merge操作实现两个DataFrame之间的合并,类似于sql两个表之间的关联查询.merge的使用方法及参数解释如下: pd.merge(left, right, on=None, ...
- pandas将dataframe中的年、月、日数据列合并成完整日期字符串、并使用to_datetime将字符串格式转化为日期格式
pandas将dataframe中的年.月.日数据列合并成完整日期字符串.并使用to_datetime将字符串格式转化为日期格式 目录
- pandas之dataframe去掉冗余行以及左连接合并dataframe
为什么80%的码农都做不了架构师?>>> 去掉冗余行 重现冗余数据 zylMBP:~ zhangyalin$ python3 Python 3.6.5 (v3.6.5:f59c ...
- Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例(增删改查排序之选择指定列、根据条件选择特定数据、赋值、列名重命名、修改列数据、处理缺失值、列合并、分组之详细攻略
Python语言学习之pandas:DataFrame二维表的简介.常用函数.常用案例(增删改查排序之选择指定列.根据条件选择特定数据.赋值.列名重命名.修改列数据.处理缺失值.列合并.分组之详细攻略 ...
- python dataframe 中位数_python下的Pandas中DataFrame基本操作(一),基本函数整理
pandas作者Wes McKinney 在[PYTHON FOR DATA ANALYSIS]中对pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程中,我发现书中的内容还只是冰 ...
最新文章
- AI 迎来重要发展契机,开发者的机会在哪里?
- 【分析】大数据爆破之年:在这5个领域“掘金”最靠谱
- NOKIA Update for Windows Phone
- css3 的 calc()函数在布局中的使用----头部高度固定,页面正好占满一屏
- python实现计算字符串或列表中每个字符出现的次数,并打印出现次数最多的字符
- ASP.NET Web API中实现版本
- Liunx之nginx代理
- Python读写与追加excel文件
- Java实验9 T1.往文件中写入1万个随机数,比较用时的多少
- vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
- ux.form.field.KindEditor 所见所得编辑器
- Storm vs. Spark Streaming
- 从神话诗歌到奇幻科学的人类探索史·《月亮》·三
- 等级保护三级测评-----云计算安全扩展要求
- vscode实用快捷键_23个常用的VSCode快捷键(动图演示)
- 第4讲 组合逻辑电路实例:编码器、译码器、数据选择器、加法器、数值比较器、代码转换器——计算机逻辑基础
- Xcode8兼容iOS7的解决方法
- JavaScript全套课程-张鹏-专题视频课程
- UML知识点总结(一)
- Could not connect to wpa_supplicant: p2p-dev-wlan0 - re-trying
热门文章
- OpenCV源代码分析——SGBM
- SpringBoot 连接mysql踩到的坑
- Linux rsync命令详解
- MolCLR | 对比学习在分子图表示任务中大有作为
- 帮小猴子准备的高数知识点
- 在ubuntu下搭建Android的开发环境
- Microbiome:使用16S rRNA基因数据集实现种水平的分类
- R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences
- SourceTracker—微生物来源分析
- numpy使用diagonal函数和sum函数计算矩阵的迹(trace)、使用T函数对矩阵进行转置(transpose matrix)