原标题:左右用R右手Python9——字符串合并与拆分

杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化。个人公众号:数据小魔方(微信ID:datamofang) ,“数据小魔方”创始人。

在文本处理和数据清洗阶段,对字符串或者字符型变量进行分割、提取或者合并虽然谈不上什么高频需求,但是往往也对很重要的。

接下来跟大家大致盘点一下在R语言与Pyhton中,常用的字符串分割与合并的函数。

R语言:

字符串向量:

针对向量:

strsplit #针对字符串向量(拆分)

str_split #针对字符串向量(拆分)stringr包内函数

paste #针对向量合并

针对数据框:

unite #合并数据框中的某几列

separate #将数据框中某一列按照某种模式拆分成几列R语言:library(dplyr)

library(stringr)

library(tidyr) myyear

[ 1] "10""03""01""09""04""02""05""07""00""12"

[ 1] "18""15""28""00""11""20""31""19""04""12"

首先使用paste函数进行合并:

full

[1]"2000""2010""2002""2012""2015""2006""2001""2017""2005""2013"

使用strsplit函数进行拆分:

myyear1=mymonth1=myday1=NULLfor( i in 1:length(full)){myyear1[i]

str_split函数与strsplit函数用法类似:

myyear1=mymonth1=myday1= NULL

for( i in1:length(full)){myyear1[i] myyear1;mymonth1;myday1[ 1] "2000""2010""2002""2012""2015""2006""2001""2017""2005""2013"

[ 1] "10""03""01""09""04""02""05""07""00""12"

[ 1] "18""15""28""00""11""20""31""19""04""12"

接下来解释在如何直接针对数据框进行合并与分列的操作:

mydata

120001018

220100315

320020128

420120900

520150411

620060220

720010531

820170719

920050004

1020131212unite (data,col, ..., sep = "-", remove = TRUE)separate(data,col, into,sep= "-", remove = TRUE)

unite和separate函数是配对函数,内部的参数严格白痴对称,第一个参数数要操作的数据框名称,第二个参数是合并后的新列名(或者待拆分的列名),第三部分是待合并的列名向量(拆分后的新增列名),sep是拆分(合并)依据,remove则控制输出的数据框是否包含原始向量(针对合并前的待合并变量和拆分前的待拆分变量)。

mydata1

datetime myyear mymonth myday

12000- 10- 1820001018

22010- 03- 1520100315

32002- 01- 2820020128

42012- 09- 0020120900

52015- 04- 1120150411

62006- 02- 2020060220

72001- 05- 3120010531

82017- 07- 1920170719

92005- 00- 0420050004

102013- 12- 1220131212mydata2

12000- 10- 182000- 10- 1820001018

22010- 03- 152010- 03- 1520100315

32002- 01- 282002- 01- 2820020128

42012- 09- 002012- 09- 0020120900

52015- 04- 112015- 04- 1120150411

62006- 02- 202006- 02- 2020060220

72001- 05- 312001- 05- 3120010531

82017- 07- 192017- 07- 1920170719

92005- 00- 042005- 00- 0420050004

102013- 12- 122013- 12- 1220131212

Python字符串合并与分列:

因为对Python的字符串操作掌握有限,再加上Python字符串操作及其灵活,各种推导式和匿名函数可以很方便的完成,这里仅给出自己常用的做法作为实例,未包含所有方法:

字符串合并:

字符串链接符:”+”

字符串合并函数:join

字符串拆分:split

importrandom importpandas aspd myyear=random.sample(list(range( 2000, 2017)), 10);myyearmymonth=[ '%02d'% i fori inrandom.sample(list(range( 1, 12)), 10)];mymonthmyday=[ '%02d'% i fori inrandom.sample(list(range( 1, 31)), 10)];myday[ 2006, 2000, 2007, 2001, 2015, 2016, 2002, 2012, 2010, 2004][ '04', '11', '06', '10', '07', '08', '05', '02', '03', '01'][ '13', '28', '21', '06', '08', '03', '17', '16', '04', '20']

字符串合并:

mydate=[str(i)+ "-"+j+ "-"+k fori,j,k inzip(myyear,mymonth,myday)][ '2011-04-25', '2008-11-30', '2003-06-02', '2007-10-22', '2009-07-13', '2005-08-27', '2014-05-28', '2012-02-10', '2016-03-14', '2015-01-21']mydate=[ "-".join([str(i),j,k]) fori,j,k inzip(myyear,mymonth,myday)][ '2011-04-25', '2008-11-30', '2003-06-02', '2007-10-22', '2009-07-13', '2005-08-27', '2014-05-28', '2012-02-10', '2016-03-14', '2015-01-21']

字符串拆分:

方法一(列表推导式):

myyear1=[i.split( "-")[ 0] fori inmydate];myyear1mymonth1=[i.split( "-")[ 1] fori inmydate];mymonth1myday1=[i.split( "-")[ 2] fori inmydate];myday1[ '2011', '2008', '2003', '2007', '2009', '2005', '2014', '2012', '2016', '2015'][ '04', '11', '06', '10', '07', '08', '05', '02', '03', '01'][ '25', '30', '02', '22', '13', '27', '28', '10', '14', '21']

方法二(使用字典):

mydata=pd.DataFrame({ "date":mydate})mydata[ "date"].str.split( "-",expand= True)

012

020110425

120081130

220030602

320071022

420090713

520050827

620140528

720120210

820160314

920150121myyear2=mydata[ "date"].str.split( "-",expand= True)[ 0];print(myyear2)mymonth2=mydata[ "date"].str.split( "-",expand= True)[ 1];print(mymonth2)myday2=mydata[ "date"].str.split( "-",expand= True)[ 2];print(myday2) 02011120082200332007420095200562014720128201692015Name: 0, dtype: object 004111206310407508605702803901Name: 1, dtype: object 025130202322413527628710814921Name: 2, dtype: object

本文小结——字符串拆分与合并:

R语言:

拆分:

strsplit

str_split

合并:

paste

tidyr::unite

tidyr::separate

Python:

拆分:

.split

合并:

“+”

join

R语言(ggplot2入门)可视化在商务场景中的应用,已经有200+小伙伴加入了!

责任编辑:

python字典合并输入用字符_左右用R右手Python9——字符串合并与拆分相关推荐

  1. access 合并多行字符串_八种方法玩转字符串合并,这篇文章全都给你讲明白!...

    在日常工作过程中,经常会遇到要把一串字符拼接到一起的情况. 你是不是还一直在用"&"连接符来合并字符串呢?当遇到很多个字符串需要合并的时候,这种方法又费时又费力,那有没有其 ...

  2. 输入英文字符,请按照字母表顺序统计字符串中所有出现的字母的个数

    字符统计 描述 输入英文字符,请按照字母表顺序统计字符串中所有出现的字母的个数(计数时不区分大小写),若输入的内容有误,则输出Error! 输入 一串字符. 输出 按题目要求输出. 输入样例 1 He ...

  3. python输入单个字符_关于输入:Python从用户读取单个字符

    有没有从用户输入中读取单个字符的方法?例如,他们在终端按下一个键,然后返回(类似于getch()).我知道Windows中有一个函数,但是我想要一个跨平台的函数. 在Windows上,我遇到了和这个问 ...

  4. python怎么把图片变成字符_用Python把图片变成字符画

    更新!项目最新地址链接:click me 我们先来看一下效果(图为知乎的吉祥物:刘看山) 原画 字符画(由于图片较大,所以截图的时候未截完整:P) 代码在此,简单讲解请看代码的注释部分,部分详解在代码 ...

  5. python 字典 通过值返回键_怎么使用python字典根据值返回键

    怎么使用python字典根据值返回键 发布时间:2020-07-13 13:47:36 来源:亿速云 阅读:75 作者:Leah 本篇文章给大家分享的是有关怎么使用python字典根据值返回键,小编觉 ...

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

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

  7. python 字典取值的时间复杂度_五道常见的Python面试题一定不要答错!

    第1题:阅读下面的代码,默读出A0,A1至An的最终值. 默读代码类的题目,相对来说是比较简单的.重点去研究列表解析,之后你就可以轻松的回答这些问题啦 第2题:如何提高python的运行效率? 1.数 ...

  8. python中指定最后一个字符_如何从Python字符串中删除最后一个字符?

    如何从Python字符串中删除最后一个字符? Python支持负索引切片和正切片.负索引从  -1 到-(iterable_length)开始.我们将使用负切片从可迭代对象的末尾获取元素. 索引  - ...

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

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

最新文章

  1. pycharm设置控制台的解释器_PyCharm 中文教程 01:运行 Python 的四种方式
  2. Charpter5 软件测试总结
  3. OpenJDK 正式宣布AWT、2D、Swing等项目解散
  4. python 显示数据库数据tk_如何使用python显示从Mysql表获取的Tkinter treeview中的数据...
  5. 【Python基础】4300 字Python列表使用总结,用心!
  6. Redis-字典(hash)基础
  7. python查看数据类型type_python——获取数据类型:type()、isinstance()的使用方法:...
  8. 房地产大亨PropTiger将VR/AR初创公司3DPhy收入麾下
  9. EasyUI权限(二星权限)
  10. Mysql解压版配置环境等
  11. xgboost三种特征重要性选择方法
  12. 删除数据库中的所有表
  13. 【无标题】How to Programe 2021 GMC Terrain Smart Key Programming by Autel IM508
  14. Android高级UI开发(九)之侧滑菜单 --抽屉
  15. 使用java做用一张厚度为0.01米的纸折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
  16. H5特效demo网站
  17. 信息学奥赛一本通 1400:统计单词数 | 1954:【11NOIP普及组】统计单词数 | OpenJudge NOI 1.12 05 | 洛谷 P1308 [NOIP2011 普及组] 统计单词数
  18. 如何批量新建文件夹,批量新建文件夹并命名
  19. 人类算力天花板?1750 亿参数的 AI 模型 GPT-3 引爆硅谷
  20. HG30-IIB型数字多功能校准仪

热门文章

  1. 用MaskFilter画抽奖大转盘Demo
  2. Java案例———超市购物系统(类的封装)
  3. yum安装和卸载git
  4. 啡鸟集|学冲咖啡,先学咖啡冲煮器具知识
  5. r3 5300g核显相当于什么显卡
  6. 运行python文件、电脑突然黑屏_电脑突然黑屏怎么回事
  7. Ubuntu配置IP地址
  8. Python中的负数取余问题
  9. 向狼学习十条处世哲学
  10. Python OpenCV2 cv2.putText用法