pandas str方法的使用
pandas的str方法
pandas特定的列经过str之后,就可以使用各种python常用的字符处理方法了。
首先,构建dataframe:
import pandas as pd
d={'gene':{'a':'gene1','b':'gene2','c':'gene3','d':'gene4'},'expression':{'a':'low:0','b':'mid:3','c':'mid:4','d':'high:9'},'description':{'a':'transposon element','b':'nuclear genes','c':'retrotransposon','d':'unknown'}}
df=pd.DataFrame(d)
print(df)gene expression description
a gene1 low:0 transposon element
b gene2 mid:3 nuclear genes
c gene3 mid:4 retrotransposon
d gene4 high:9 unknown
几种常见的str方法如下:
筛选出含有特定字符串的行:contains() 方法
df1=df[df['description'].str.contains('transposon')]
print(df1)gene expression description
a gene1 low:0 transposon element
c gene3 mid:4 retrotransposon
字符串分割(将特定列拿出来,按特定字符分开,然后形成一个新的dataframe)
df1=df['columns_name'].str.split(':',expand=True)
print(df1)0 1
a low 0
b mid 3
c mid 4
d high 9
当然,可以直接将这两列加到df中:
df[['exp1','exp2']]=df['expression'].str.split(':',expand=True)
print(df)gene expression description exp1 exp2
a gene1 low:0 transposon element low 0
b gene2 mid:3 nuclear genes mid 3
c gene3 mid:4 retrotransposon mid 4
d gene4 high:9 unknown high 9
注意1:
此时exp2这一列的数据类型是object,即python中的str,而不是int。可以通过astype将其转换为int
print(df['exp2'].dtype)
dtype('O')#'O'即objectdf['exp2']=df['exp2'].astype(int)print(df['exp2'].dtype)
dtype('int32')
注意2:
expand=True不加的话,df1中将只有一列,其实就是一个series。
df=pd.DataFrame(d)
df1=df['expression'].str.split(':')
print(df1)
a [low, 0]
b [mid, 3]
c [mid, 4]
d [high, 9]
Name: expression, dtype: object
type(df1)
<class 'pandas.core.series.Series'>
字符串的替换
print(df)gene expression description exp1 exp2
a gene1 low:0 transposon element low 0
b gene2 mid:3 nuclear genes mid 3
c gene3 mid:4 retrotransposon mid 4
d gene4 high:9 unknown high 9df['gene']=df['gene'].str.replace('gene','Gene')print(df)gene expression description exp1 exp2
a Gene1 low:0 transposon element low 0
b Gene2 mid:3 nuclear genes mid 3
c Gene3 mid:4 retrotransposon mid 4
d Gene4 high:9 unknown high 9
字符串两端的字符的判断 startswith 与 endswith
df1=df[df['expression'].str.startswith('m')]
print(df1)gene expression description exp1 exp2
b gene2 mid:3 nuclear genes mid 3
c gene3 mid:4 retrotransposon mid 4
正则表达式 findall的使用
s=df['expression'].str.findall('[a-z]+')
print(s)
a [low]
b [mid]
c [mid]
d [high]
Name: expression, dtype: object
去除特定字符strip(包括lstrip和rstrip)
print(df1)gene expression description exp1 exp2
b gene2 mid:3 nuclear genes mid 3
c gene3 mid:4 retrotransposon mid 4df1['expression']=df1['expression'].str.lstrip('mid:')
print(df1)gene expression description exp1 exp2
b gene2 3 nuclear genes mid 3
c gene3 4 retrotransposon mid 4
pandas str方法的使用相关推荐
- python3-pandas DataFrame 索引、bool索引、pandas 字符串方法
1.DataFrame 索引 1.1 普通索引取值 pandas 取行或者列的注意点: 方括号写数组,表示取行,对行进行操作 方括号写字符串,表示取列,对列进行操作 import pandas as ...
- Pandas 函数方法汇总一览查询(持续补充改进)
Pandas 函数方法汇总一览查询(持续补充改进) 文章目录 Pandas 函数方法汇总一览查询(持续补充改进) 初衷 Pandas 最最常用函数罗列 Pandas 函数用法示例 初衷 NumPy.P ...
- Pandas使用方法
Pandas使用方法 1 Pandas介绍 2008年WesMcKinney开发出的库 专门用于数据挖掘的开源python库 以Numpy为基础,借力Numpy模块在计算方面性能高的优势 基于matp ...
- python安装pandas模块-python安装numpy和pandas的方法步骤
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
- python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比
[Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...
- python如何安装panda数据库_在Pycharm中安装Pandas库方法(简单易懂)
开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍.Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且 ...
- 循环下标_【转】【Python效率】五种Pandas循环方法效率对比
[Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...
- 【转载】Python遍历pandas数据方法总结
转载自脚本之家 https://www.jb51.net/article/134753.htm <Python遍历pandas数据方法总结> 贴4条常用的,其他的移步原帖链接. 列表解析方 ...
- -- str --() 方法
str()方法是在数据被转换为str类型时自动调用的方法 class Person(object): def init(self, name, age): self.name = name self. ...
最新文章
- C_str的入门级notes
- R语言ggplot2可视化对图形进行纹理填充实战及启示:遇到问题首先去思考有没有现成的包(ggpattern)可以去解决这个问题
- 老王亲述:我的运维心路历程
- 数据运营者的福音:海量数据处理利器Greenplum
- GDCM:gdcm::XMLDictReader的测试程序
- nginx编译安装时添加echo模块
- 组织健康的路径:良性互动
- ERP项目实施记录01
- [WPF]有Focus(), 那Unfocus()呢?
- 不要为了“分库分表”而“分库分表”!
- Java基础之类加载器
- 物流管理源代码java_基于jsp的物流管理-JavaEE实现物流管理 - java项目源码
- 实现网页长截图的常见思路总结
- vue中清除浏览器缓存得方法
- Python求解平方怪圈问题
- Maven第7篇:聚合、继承、单继承问题详解
- ios应用音频与来电铃声冲突问题
- 鸿蒙音波萨顶顶,萨顶顶把古代论文唱成歌,撒贝宁评价:“最难合作的艺人之一”...
- win10更新后任务栏卡死 的原因和解决办法
- 【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0