原标题:左手用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

这里为了节省时间,只介绍第一种基础函数,欲了解详情,可以查看这篇历史文章:

(R语言数据处理——数据合并与追加)

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()

以上仅是个人常用的几种,方法肯定不至于此,欢迎大家补充!

天善学院svip正火爆报名中!包含Excel BI、Python3爬虫案例、Python机器学习、Python数据科学家、大数据体系、数据分析报告、数据分析师体系、深度学习、R语言案例共10套课程,其他课程只需五折即可,欢迎大家关注报名。

本文作者:杜雨摘自:数据小魔方

将在重在实战,十五大案例,开启R语言实战之门金钥匙课程中担任小助手。返回搜狐,查看更多

责任编辑:

python的rbind_左手用R右手Python系列—数据合并与追加相关推荐

  1. python 变量 r_左手用R右手Python系列——因子变量与分类重编码

    今天这篇介绍数据类型中因子变量的运用在R语言和Python中的实现. 因子变量是数据结构中用于描述分类事物的一类重要变量.其在现实生活中对应着大量具有实际意义的分类事物. 比如年龄段.性别.职位.爱好 ...

  2. python中factor函数_左手用R右手Python系列——因子变量与分类重编码

    原标题:左手用R右手Python系列--因子变量与分类重编码 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业 ...

  3. python正则表达式中的r与转义字符_左手用R右手Python系列13——字符串处理与正则表达式...

    原标题:左手用R右手Python系列13--字符串处理与正则表达式 杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化.个 ...

  4. python用merge匹配和左连接_左手用R右手Python系列——数据合并与追加

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定! 本文作者:天善智能社区专家杜雨 今天这篇跟大家介绍R语言 ...

  5. python索引右往左_左手用R右手Python系列5——数据切片与索引

    数据框索引: 基于数据框本身提取 subset函数 filter+select函数 Python: 数据框自身的方法 ix方法 loc方法 iloc方法 query方法 数据框自身的方法 ix方法 l ...

  6. Python中使用sentinelsat包自动下载Sentinel系列数据

    Python中使用sentinelsat包自动下载Sentinel系列数据 前言 普通下载 使用工具批量下载Sentinel 数据 使用SNAP批量下载 第三方软件或网站批量下载 Sentinel-1 ...

  7. 放弃python选r_无需纠结R还是Python

    是否适合个人偏好 是否满足工作需求 Ross Ihaka 和 Robert Gentleman 1995年创建开源语言R作为S编程语言的实现.其目的是开发一个提供更好更人性化数学据分析,统计和图形模型 ...

  8. python逻辑回归aic_基于R和Python 如何使用多项式和有序逻辑回归

    原标题:基于R和Python 如何使用多项式和有序逻辑回归 基于R和Python 如何使用多项式和有序逻辑回归 我们中的大多数对于回归的知识是有限的.其中,线性和逻辑回归是我们最喜欢的一种.作为一个有 ...

  9. 【Python基础】一文搞定pandas的数据合并

    作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...

最新文章

  1. Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)...
  2. Java 根据comboBox选择结果显示JTable
  3. 每天一道LeetCode-----重新实现开方运算sqrt(x),只返回整数部分即可
  4. 使用fping 查看局域网中有哪些ip
  5. wpf treeview调整子菜单间距_完全由C编写,高度可移植,超级牛逼的菜单架构!...
  6. 矩阵的奇异值分解_线性代数31——奇异值分解
  7. Swift 反射 API 及用法
  8. 谷歌浏览器崩溃设置崩溃_让它崩溃
  9. JavaScript:实现将 base64 字符串转换为字节数组算法(附完整源码)
  10. 【AMD显卡在WIndow10/11部署带GPU支持的深度学习环境(Tensorflow-DirectML篇)】
  11. 在win10基础上安装Ubuntu16.04双系统(双硬盘)
  12. 统计学基础——常用的概率分布(二项分布、泊松分布、指数分布、正态分布)
  13. 使用动态规划弹性扩容机器。使用拉链法O(N)求所有集合
  14. UT/UTC/GMT的区别和联系
  15. linux内核熵池,快速的给内核熵池喂随机数
  16. 经常玩电脑正确的坐姿_使用电脑的正确坐姿 你坐对了吗?
  17. 通俗易懂-SSM三大框架整合案例(SpringMVC+Spring+Mybatis)
  18. Windows内网协议学习Kerberos篇之PAC
  19. 充电:28G各类资料送给您!PPT模板、商业计划书等
  20. autojs编写的网易云音乐和视频搜索脚本源代码免费分享开源

热门文章

  1. 2023软件测试最新八股文,能不能拿心仪Offer就看你背得怎样了
  2. uDig简介和下载安装与设置中文语言包
  3. python制作流动图_利用Python生成GIF动图
  4. 榆熙教育:影响拼多多DSR的三点因素介绍
  5. App Store最新审核指南
  6. tensorflow更新变量
  7. 三角函数の自由组合定律
  8. ubuntu16.04安装AnyDesk
  9. 【论文解读】Do Prompts Solve NLP Tasks Using Natural Language?
  10. 【工具】超好用的windows搜索工具Listary