python用merge匹配和左连接_左手用R右手Python系列——数据合并与追加
感谢关注天善智能,走好数据之路↑↑↑
欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答、求职一站式搞定!
本文作者:天善智能社区专家杜雨
今天这篇跟大家介绍R语言与Python数据处理中的第二个小知识点——数据合并与追加。
针对数据合并与追加,R与Python中都有对应的函数可以快速完成需求,根据合并与追加的使用场景,这里我将本文内容分成三部分:
数据合并(简单合并,无需匹配)
数据合并(匹配合并)
数据追加
数据合并(简单合并,无需匹配)
针对简单合并而言,在R语言中主要通过以下两个函数来实现:
cbind()
dplyr::bind_cols()
df1
B= c(‘B0’, ‘B1’, ‘B2’, ‘B3’),
C= c(‘C0’, ‘C1’, ‘C2’, ‘C3’),
D=c(‘D0’, ‘D1’, ‘D2’, ‘D3’)
)
df2
F= c(‘B4’, ‘B5’, ‘B6’, ‘B7’),
G=c(‘C4’, ‘C5’, ‘C6’, ‘C7’),
H= c(‘D4’, ‘D5’, ‘D6’, ‘D7’))
df3
J= c(‘B8’, ‘B9’, ‘B10’, ‘B11’),
K=c(‘C8’, ‘C9’, ‘C10’, ‘C11’),
L=c(‘D8’, ‘D9’, ‘D10’, ‘D11’)
)
df1;df2;df3
mydata1
mydata2
在Python中,简单的合并可以通过Pandas中的concat函数来实现的。
df1 = pd.DataFrame({‘A’: [‘A0’, ‘A1’, ‘A2’, ‘A3’],
‘B’: [‘B0’, ‘B1’, ‘B2’, ‘B3’],
‘C’: [‘C0’, ‘C1’, ‘C2’, ‘C3’],
‘D’: [‘D0’, ‘D1’, ‘D2’, ‘D3’]},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({‘E’: [‘A4’, ‘A5’, ‘A6’, ‘A7’],
‘F’: [‘B4’, ‘B5’, ‘B6’, ‘B7’],
‘G’: [‘C4’, ‘C5’, ‘C6’, ‘C7’],
‘H’: [‘D4’, ‘D5’, ‘D6’, ‘D7’]},
index=[0, 1, 2, 3])
df3 = pd.DataFrame({‘I’: [‘A8’, ‘A9’, ‘A10’, ‘A11’],
‘J’: [‘B8’, ‘B9’, ‘B10’, ‘B11’],
‘K’: [‘C8’, ‘C9’, ‘C10’, ‘C11’],
‘L’: [‘D8’, ‘D9’, ‘D10’, ‘D11’]},
index=[0, 1, 2, 3])
result1 = pd.concat([df1,df2,df3],axis=1,join_axes=[df1.index])
横向合并:(需匹配)
在R语言中,这种操作有很多可选方案,如基础函数merge、plyr包中的join函数以及dplyr包中的left/right/inter/full_join等函数。
merge
plyr::join
dplyr::left/right/inter/full_join
merge(x, y, #带合并的数据集名称(左右顺序)
by = intersect(names(x), names(y)), #合并依据字段(名称相同)
by.x = by, #名称不同时需同时时声明
by.y = by, #名称不同时需同时时声明
all = FALSE,#合并类型,TRUE为全连接 (full),FALSE为内连接 (inter)
all.x = all,#左连接
all.y = all,#右连接
)
df3
gender=c(‘male’,’female’,’male’,’female’,’male’,’female’,’male’,’female’),
pay=c(‘Y’,’N’,’Y’,’Y’,’N’,’Y’,’N’,’Y’),
m_point=c(10,12,20,40,40,40,30,20))
df4
city=c(‘Beijing ‘, ‘Shenzhen’,’Guangzhou’, ‘Shenzhen’, ‘Shanghai’,’Beijing’),
age=c(23,44,54,32,34,32),
category=c(‘100-A’,’100-B’,’110-A’,’110-C’,’210-A’,’130-F’),
price=c(1200,2900,2133,5433,1346,4432))
print(df3);print(df4)
mydata3
mydata3
mydata3
mydata3
在Python中,这一操作也可以通过函数Pandas库中的cancat函数或者merge函数来完成。
Pandas-merge
df3=pd.DataFrame({“id”:[1001,1002,1003,1004,1005,1006,1007,1008],
“gender”:[‘male’,’female’,’male’,’female’,’male’,
‘female’,’male’,’female’],
“pay”:[‘Y’,’N’,’Y’,’Y’,’N’,’Y’,’N’,’Y’],
“m-point”:[10,12,20,40,40,40,30,20]})
df4= pd.DataFrame({“id”:[1001,1002,1003,1004,1005,1006],
“date”:pd.date_range(‘20130102’,periods=6),
“city”:[‘Beijing’, ‘Shenzhen’,’Guangzhou’,’Shenzhen’,’Shanghai’,’Beijing’],
“age”:[23,44,54,32,34,32],
“category”:[‘100-A’,’100-B’,’110-A’,’110-C’,’210-A’,’130-F’],
“price”:[1200,np.nan,2133,5433,np.nan,4432]},
columns =[‘id’,’date’,’city’,’category’,’age’,’price’])
print(df3);print(df4)
df_inner=pd.merge(df3,df4,how=’inner’);print(df_inner) #数据表合并(内连接:inter join)
df_left=pd.merge(df3,df4, how=’left’) ;print(df_left) #数据表合并(左连接:left join)
df_right=pd.merge(df3,df4,how=’right’);print(df_right) #数据表合并(右连接:right join)
df_outer=pd.merge(df3,df4,how=’outer’);print(df_outer) #数据表合并(全连接:full join)
数据追加:
数据追加通常只需保证数据及的宽度一致且列字段名称一致,相对来说比较简单。在R语言和Python中,也很好实现。
在R语言中,可视化朱数据追加的函数有:
rbind()
dplyr::bind_rows()
mydata3
mydata4
python中则可以很容易的通过数据框本身的append函数来实现简单的数据追加:
df1 = pd.DataFrame({‘A’: [‘A0’, ‘A1’, ‘A2’, ‘A3’],
‘B’: [‘B0’, ‘B1’, ‘B2’, ‘B3’],
‘C’: [‘C0’, ‘C1’, ‘C2’, ‘C3’],
‘D’: [‘D0’, ‘D1’, ‘D2’, ‘D3’]},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({‘A’: [‘A4’, ‘A5’, ‘A6’, ‘A7’],
‘B’: [‘B4’, ‘B5’, ‘B6’, ‘B7’],
‘C’: [‘C4’, ‘C5’, ‘C6’, ‘C7’],
‘D’: [‘D4’, ‘D5’, ‘D6’, ‘D7’]},
index=[4,5,6,7])
df3 = pd.DataFrame({‘A’: [‘A8’, ‘A9’, ‘A10’, ‘A11’],
‘B’: [‘B8’, ‘B9’, ‘B10’, ‘B11’],
‘C’: [‘C8’, ‘C9’, ‘C10’, ‘C11’],
‘D’: [‘D8’, ‘D9’, ‘D10’, ‘D11’]},
index=[8, 9,10,11])
result = df1.append(df2);print(result)
result = result.append(df3);print(result)
如果是使用canat函数也可以非常轻松的完成数据追加:
result = pd.concat([df1, df2, df3]);print(result)
本文汇总:
数据合并(简单合并)
R:
cbind()
dplyr::bind_cols()
Python:
Pandas-cancat()
数据合并(匹配和并)
R:
merge
plyr::join()
dplyr::left/right/inter/full_join()
Python:
Pandas-merge
数据追加:
R:
rbind()
dplyr::bind_rows()
Python:
Pandas-append()
Pandas-cancat()
以上仅是个人常用的几种,方法肯定不至于此,欢迎大家补充!
杜雨老师相关课程:
Hellobi Live直播【R语言可视化在商务场景中的应用】
内容:1、为什么选择R;2、ggplot2可视化理念;3、配色方案与规则;4、案例分享;5、高级数据地图专题应用;6、图形输出。
天善学院svip正限时特惠火爆报名中!包含业务知识一站通、Excel BI商业智能、七周成为数据分析师、对话大数据系列技术、R语言15案例、Python3网络爬虫实战案例、Python机器学习、Python数据科学家精华实战课程、深度学习模型和实战课程、数据分析报告共10套课程,其他课程只需五折即可,欢迎大家关注报名。
python用merge匹配和左连接_左手用R右手Python系列——数据合并与追加相关推荐
- python正则表达式中的r与转义字符_左手用R右手Python系列13——字符串处理与正则表达式...
原标题:左手用R右手Python系列13--字符串处理与正则表达式 杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化.个 ...
- python中factor函数_左手用R右手Python系列——因子变量与分类重编码
原标题:左手用R右手Python系列--因子变量与分类重编码 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业 ...
- python索引右往左_左手用R右手Python系列5——数据切片与索引
数据框索引: 基于数据框本身提取 subset函数 filter+select函数 Python: 数据框自身的方法 ix方法 loc方法 iloc方法 query方法 数据框自身的方法 ix方法 l ...
- python的rbind_左手用R右手Python系列—数据合并与追加
原标题:左手用R右手Python系列-数据合并与追加 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定! 今 ...
- python 变量 r_左手用R右手Python系列——因子变量与分类重编码
今天这篇介绍数据类型中因子变量的运用在R语言和Python中的实现. 因子变量是数据结构中用于描述分类事物的一类重要变量.其在现实生活中对应着大量具有实际意义的分类事物. 比如年龄段.性别.职位.爱好 ...
- STATA数据合并与追加(一)Merge
文章目录 Why Merge? 一.Description 简要描述 二.Syntax 命令语法 1.语法示例 2.Options 参数选项 Merge命令的options 参数表 参数具体说明 3. ...
- 一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault...
一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault
- MySQL什么用于左连接_简单谈谈mysql左连接内连接
前言 最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写 业务: sql语句统计出入库数据. 问题:只统计了X端入库单. 原因: 没有发现X端的数 ...
- mysql update 左连接_使用左连接的MySQL更新查询
表格式 表名:file_manager_folder Rows:id,parentId,name 我的查询模拟将文件夹移动到另一个文件夹,并使用IN(?)接受数组. 如果没有相同的parentId和n ...
最新文章
- Android -- setWillNotDraw()
- 测试博客园Markdown 表格
- 比赛的一道题:SCSHOP1.5代码审计
- jmeter设置全局变量
- python 阿里云短信接口_阿里云短信PythonSDK的用法
- 0046-简单的分段函数(二)
- 【递归】桐桐的递归函数
- Spring常用注解汇总
- 读书笔记Black-Scholes-Merton之二
- python实现一个简单的图片浏览器
- 分页加载总页数计算公式
- 判断是否打开相机权限,如果没有打开相机权限
- 好豆直播功能需求分析与优先级排序
- 使用python+ffmpeg批量将视频水平翻转
- 为什么要研究游戏AI呢?
- win7共享网络的方法简述
- recycler上下拉刷新view
- WordPress采集wordpress挂机采集插件
- vue实现 文件重命名
- 曾李青:早期创业公司九种死法
热门文章
- 盘点类别级物体6D位姿估计
- SLAM从0到1——状态估计之最小二乘问题解法:最速下降法、牛顿法、高斯牛顿法、LM法...
- 计算机网络连接设备的有什么,常用网络连接设备有哪些?
- linux 在终端修改文件,linux命令行学习(42):修改.bashrc文件
- SpringBoot 编写ajax可以访问的接口
- python数据库教程_python教程:数据库
- 科研文献|粪便污染可以解释人为影响环境中抗生素耐药基因丰度
- 在线作图|如何绘制一张坡度图
- Nature综述:工程微生物组的通用原则和最佳实践
- R中控制输出数值的小数点位数round,和有效数字位数signif