欢迎关注”生信修炼手册”!

在pandas中,通过DataFrame来存储文件中的内容,其中最常见的数据类型就是字符串了。针对字符串,pandas提供了一系列的函数,来提高操作效率。

这些函数可以方便的操作字符串类型的Series对象,对数据框中的某一列进行操作,这种向量化的操作提高了处理效率。pandas中的字符串处理函数以str开头,常用的有以下几种

1. 大小写转换

通过str.lower和str.upper来实现,用法如下

>>> df = pd.DataFrame(['A', 'B', 'C', 'D'])
>>> df0
0 A
1 B
2 C
3 D
>>> df[1] = df[0].str.lower()
>>> df[2] = df[1].str.upper()
>>> df0 1 2
0 A a A
1 B b B
2 C c C
3 D d D

2. 去除空白

和内置的strip系列函数相同,pandas也提供了一系列的去除空白函数,用法如下

>>> df = pd.DataFrame([' A', ' B', 'C ', 'D '])
>>> df0
0   A
1   B
2  C
3  D
# str.strip, 去除字符串前后两端的空白
>>> df[0].str.strip().array
<PandasArray>
['A', 'B', 'C', 'D']
Length: 4, dtype: object
# str.lstrip, 去除字符串前端的空白
>>> df[0].str.lstrip().array
<PandasArray>
['A', 'B', 'C ', 'D ']
Length: 4, dtype: object
# str.lstrip, 去除字符串后端的空白
>>> df[0].str.rstrip().array
<PandasArray>
[' A', ' B', 'C', 'D']
Length: 4, dtype: object

3. 拆分

通过str.split实现,可以指定拆分的次数,用法如下

>>> df = pd.DataFrame(['A_1_1', ' B_2_1', 'C_3_1', 'D_4_1'])
# 默认按照指定的分隔符进行拆分,结果为列表
>>> df[0].str.split('_')
0 [A, 1, 1]
1 [ B, 2, 1]
2 [C, 3, 1]
3 [D, 4, 1]
Name: 0, dtype: object# n参数,指定分隔的次数
>>> df[0].str.split('_', n = 1)
0 [A, 1_1]
1 [B, 2_1]
2 [C, 3_1]
3 [D, 4_1]
Name: 0, dtype: object# expand 参数默认为False, True表示返回值为数据框
>>> df[0].str.split('_', expand=True)0 1 2
0 A 1 1
1 B 2 1
2 C 3 1
3 D 4 1

4. 替换

通过str.replace来实现,通过正则表达式来进行全局替换,用法如下

>>> df = pd.DataFrame(['A_1_1', 'B_2_1', 'C_3_1', 'D_4_1'])
# 第一个参数为需要替换的值
# 第二个参数为替换后的值
>>> df[0].str.replace('_', '-')
0 A-1-1
1 B-2-1
2 C-3-1
3 D-4-1
Name: 0, dtype: object# 用正则表达式来进行替换
>>> df[0].str.replace('[\d_]+', '')
0 A
1 B
2 C
3 D
Name: 0, dtype: object# regex参数的默认值为True, 表示第一个参数为正则表达式
# 当值为False时,表示第一个参数为常规的字符串
>>> df[0].str.replace('_', '-', regex=False)
0 A-1-1
1 B-2-1
2 C-3-1
3 D-4-1
Name: 0, dtype: object

5. 拼接

通过str.cat函数来实现,用法如下

>>> import pandas as pd
>>> df = pd.DataFrame(['A', 'B', 'C', 'D'])
>>> df0
0 A
1 B
2 C
3 D
# 单个Series对象,将所有数据拼接在一起
>>> df[0].str.cat()
'ABCD'
# sep参数制定分隔符
>>> df[0].str.cat(sep=',')
'A,B,C,D'# 当两个数组拼接时,返回一个新的Series对象
>>> df[0].str.cat(['1','2', '3', '4'])
0 A1
1 B2
2 C3
3 D4
Name: 0, dtype: object# 当拼接的对象为一个数据框时,将数据框的所有列都进行拼接
>>> df[1] = df[0].str.cat(['1','2', '3', '4'])
>>> df0 1
0 A A1
1 B B2
2 C C3
3 D D4
>>> df[0].str.cat(df)
0 AAA1
1 BBB2
2 CCC3
3 DDD4
Name: 0, dtype: object

6. 判断是否包含子字符串

通过str.contain函数来实现局部查找,类似re.search函数,用法如下

>>> df = pd.DataFrame(['A_1_1', 'B_2_1', 'C_3_1', 'D_4_1'])
>>> df0
0  A_1_1
1  B_2_1
2  C_3_1
3  D_4_1>>> df[0].str.contains('1')
0    True
1    True
2    True
3    True
Name: 0, dtype: bool>>> df[0].str.contains('\w+')
0    True
1    True
2    True
3    True
Name: 0, dtype: bool

用str.match函数来实现从头开始的全局查找,类似re.match函数,用法如下

>>> df[0].str.match('1')
0    False
1    False
2    False
3    False
Name: 0, dtype: bool>>> df[0].str.match('\w+')
0    True
1    True
2    True
3    True
Name: 0, dtype: bool

7. 提取子字符串

通过str.extract和str.extractall函数来实现,用法如下

>>> df = pd.DataFrame(['A_1_1', 'B_2_1', 'C_3_1', 'D_4_1'])
>>> df0
0  A_1_1
1  B_2_1
2  C_3_1
3  D_4_1# extract函数只提取一次符合匹配模式的字符串
>>> df[0].str.extract(r'(\w)_(\d)')0  1
0  A 1
1  B 2
2  C 3
3  D 4
# 用下述写法指定数据框的表头
>>> df[0].str.extract(r'(?P<letter>\w)_(?P<digist>\d)')letter digist
0      A 1
1      B 2
2      C 3
3      D 4
# extractall提取一个字符串中所有符合模式的字符串
# 返回值为一个行为多重索引的数据框
# match表示匹配的顺序,从0开始计数
>>> df[0].str.extractall(r'(?P<letter>\w)_(?P<digist>\d)')letter digistmatch
0 0          A 1
1 0          B 2
2 0          C 3
3 0          D 4

以上是部分常用的字符串函数,完整的字符串处理函数请查看官方的API文档。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

更多精彩

  • KEGG数据库,除了pathway你还知道哪些

  • 全网最完整的circos中文教程

  • DNA甲基化数据分析专题

  • 突变检测数据分析专题

  • mRNA数据分析专题

  • lncRNA数据分析专题

  • circRNA数据分析专题

  • miRNA数据分析专题

  • 单细胞转录组数据分析专题

  • chip_seq数据分析专题

  • Hi-C数据分析专题

  • HLA数据分析专题

  • TCGA肿瘤数据分析专题

  • 基因组组装数据分析专题

  • CNV数据分析专题

  • GWAS数据分析专题

  • 2018年推文合集

  • 2019年推文合集

写在最后

转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。

扫描下方二维码,关注我们,解锁更多精彩内容!

一个只分享干货的

生信公众号

pandas中的字符串处理函数相关推荐

  1. pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性

    pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations).例如,计算两种商品销售额之间的3个月的滚动相关性 目录

  2. pythonpandas函数详解_对pandas中Series的map函数详解

    Series的map方法可以接受一个函数或含有映射关系的字典型对象. 使用map是一种实现元素级转换以及其他数据清理工作的便捷方式. (DataFrame中对应的是applymap()函数,当然Dat ...

  3. Python之pandas:pandas中to_csv()、read_csv()函数的index、index_col(不将索引列写入)参数详解之详细攻略

    Python之pandas:pandas中to_csv().read_csv()函数的index.index_col(不将索引列写入)参数详解之详细攻略 目录 pandas中to_csv().read ...

  4. c语言中有裁剪字符串的函数吗,C语言中的字符串截取函数

    /*======================================================== 子数整数 源程序名 num.??? (pas,c,cpp) 可执行文件名 num. ...

  5. c语言sub函数是什么,C语言中的字符串截取函数

    C语言中的字符串截取函数及应用 /*======================================================== 子数整数 源程序名 num.??? (pas,c, ...

  6. Pandas中at、iat函数详解

    at 函数:通过行名和列名来取值(取行名为a, 列名为A的值) iat 函数:通过行号和列号来取值(取第1行,第1列的值) 本文给出at.iat常见的用法,并附上详细代码. 1. 首先创建一个Data ...

  7. C++语言中反转字符串的函数strrev(), reverse()

    原文章地址:C++语言中反转字符串的函数strrev(), reverse() ,作者:王陸 (侵删) 1.使用string.h中的strrev函数 1 #include<stdio.h> ...

  8. Python中可以使用字符串处理函数来删除指定的字符或者字符集合。在这篇文章中,我们将会介绍如何使用Python来删除一个或多个指定字符。作为标题,《用Pyth...

    Python中可以使用字符串处理函数来删除指定的字符或者字符集合.在这篇文章中,我们将会介绍如何使用Python来删除一个或多个指定字符.作为标题,<用Python删除指定字符(Removing ...

  9. 聊一聊Mysql中的字符串拼接函数

    生死看淡,上来就干! 简单来说,Mysql中的字符串拼接函数主要有三个,分别是CONCAT().CONCAT_WS()以及GROUP_CONCAT():废话不多说,下面就每个函数具体来看一下: 1.C ...

最新文章

  1. Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单
  2. class.forname找不到类_15个“专科专业”就业找工作容易,关注热度也挺高,报考比较靠谱...
  3. 深入理解angularjs $watch ,$apply 和 $digest --- 理解数据绑定过程
  4. 计算机桌面窗口移动有虚影,win7系统桌面出现残影影响心情?一招帮你解决问题...
  5. 白话Elasticsearch41-深入聚合数据分析之案例实战__过滤+聚合:统计价格大于2000的电视平均价格
  6. 蓝叠 正在检查服务器最新,Windows update一直停留在正在检查更新
  7. 前端学习(3073):vue+element今日头条管理-删除文章失败(配合axios使用)
  8. Linux|麒麟操作系统实现多路RTMP|RTSP播放
  9. linux cp后文件变大,使用 rsync 复制大文件的一些误解 | Linux 中国
  10. wdatepicker ajax传参,DatePicker在Ajax加载的页面中不起作用
  11. 【英语学习】【Level 08】U01 Let's Read L2 Of fairies and princesses
  12. mysql汉字格式_mysql 中的varchar255 uft-8 的格式到底能放多少汉字
  13. LR 监控mysql
  14. 关于PostThreadMessage以及创建线程消息队列
  15. 痘痘告诉你,身体哪里生病了
  16. leetcode **773. 滑动谜题(拼图)(2021.6.26)
  17. 智能家居时代到来?智能家居是有必要的吗?
  18. 上海始终未出现真正“富人区”
  19. 吉林大学计算机系高级语言程序设计(C语言)期末题目及解答(上)
  20. 学单片机之前需要做哪些准备?

热门文章

  1. Pixel 2 XL手机 破BootLoader、刷机流程
  2. css PC端弹窗时禁止底部页面滚动
  3. 校运会计算机科学系大本营,新闻睇睇睇 | 计算机学院勇夺校运会团体总分第一名,创造历史性佳绩!...
  4. I.MX6ULL裸机驱动开发四种方式总结
  5. The Fourth of Word-Day
  6. unity 使用角色控制器CharacterController移动对象造成模型动画的抖动
  7. 常见的RuntimeException有哪些
  8. 3.1_43 JavaSE-WEB核心 P1 【Tomcat、Servlet】
  9. MATLAB算法实战应用案例精讲-【深度学习】多尺度特征融合-目标检测(论文篇五)
  10. 安装flash_player解码器vlc_codecs+ffmpeg-4和opera+chrome