文章目录

  • 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相关推荐

  1. python DataFrame数据合并 merge()、concat()方法

    文章目录 merge() 1.常规合并 ①方法1 ②方法2 重要参数 合并方式 left right outer inner 准备数据' inner(默认) outer left right 2.多对 ...

  2. Pandas 中DataFrame 数据合并 Contract | Merge

    最近在工作中,遇到了数据合并.连接的问题,故整理如下,供需要者参考~ 参考自:象在舞:https://blog.csdn.net/gdkyxy2013/article/details/80785361 ...

  3. pandas之DataFrame合并merge

    一.merge merge操作实现两个DataFrame之间的合并,类似于sql两个表之间的关联查询.merge的使用方法及参数解释如下: pd.merge(left, right, on=None, ...

  4. python column stack_Python基础 | pandas中dataframe的整合与形变(merge reshape)

    [toc] 本文示例数据下载,密码:vwy3 import pandas as pd # 数据是之前在cnblog上抓取的部分文章信息 df = pd.read_csv('./data/SQL测试用数 ...

  5. python dataframe合并相同行_pandas之DataFrame合并merge

    一.merge merge操作实现两个DataFrame之间的合并,类似于sql两个表之间的关联查询.merge的使用方法及参数解释如下: pd.merge(left, right, on=None, ...

  6. pandas将dataframe中的年、月、日数据列合并成完整日期字符串、并使用to_datetime将字符串格式转化为日期格式

    pandas将dataframe中的年.月.日数据列合并成完整日期字符串.并使用to_datetime将字符串格式转化为日期格式 目录

  7. pandas之dataframe去掉冗余行以及左连接合并dataframe

    为什么80%的码农都做不了架构师?>>>    去掉冗余行 重现冗余数据 zylMBP:~ zhangyalin$ python3 Python 3.6.5 (v3.6.5:f59c ...

  8. Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例(增删改查排序之选择指定列、根据条件选择特定数据、赋值、列名重命名、修改列数据、处理缺失值、列合并、分组之详细攻略

    Python语言学习之pandas:DataFrame二维表的简介.常用函数.常用案例(增删改查排序之选择指定列.根据条件选择特定数据.赋值.列名重命名.修改列数据.处理缺失值.列合并.分组之详细攻略 ...

  9. python dataframe 中位数_python下的Pandas中DataFrame基本操作(一),基本函数整理

    pandas作者Wes McKinney 在[PYTHON FOR DATA ANALYSIS]中对pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程中,我发现书中的内容还只是冰 ...

最新文章

  1. AI 迎来重要发展契机,开发者的机会在哪里?
  2. 【分析】大数据爆破之年:在这5个领域“掘金”最靠谱
  3. NOKIA Update for Windows Phone
  4. css3 的 calc()函数在布局中的使用----头部高度固定,页面正好占满一屏
  5. python实现计算字符串或列表中每个字符出现的次数,并打印出现次数最多的字符
  6. ASP.NET Web API中实现版本
  7. Liunx之nginx代理
  8. Python读写与追加excel文件
  9. Java实验9 T1.往文件中写入1万个随机数,比较用时的多少
  10. vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
  11. ux.form.field.KindEditor 所见所得编辑器
  12. Storm vs. Spark Streaming
  13. 从神话诗歌到奇幻科学的人类探索史·《月亮》·三
  14. 等级保护三级测评-----云计算安全扩展要求
  15. vscode实用快捷键_23个常用的VSCode快捷键(动图演示)
  16. 第4讲 组合逻辑电路实例:编码器、译码器、数据选择器、加法器、数值比较器、代码转换器——计算机逻辑基础
  17. Xcode8兼容iOS7的解决方法
  18. JavaScript全套课程-张鹏-专题视频课程
  19. UML知识点总结(一)
  20. Could not connect to wpa_supplicant: p2p-dev-wlan0 - re-trying

热门文章

  1. OpenCV源代码分析——SGBM
  2. SpringBoot 连接mysql踩到的坑
  3. Linux rsync命令详解
  4. MolCLR | 对比学习在分子图表示任务中大有作为
  5. 帮小猴子准备的高数知识点
  6. 在ubuntu下搭建Android的开发环境
  7. Microbiome:使用16S rRNA基因数据集实现种水平的分类
  8. R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences
  9. SourceTracker—微生物来源分析
  10. numpy使用diagonal函数和sum函数计算矩阵的迹(trace)、使用T函数对矩阵进行转置(transpose matrix)