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'即object

df['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    9

df['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    4

df1['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
  • 17
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pandas是一个强大的数据分析工具,它提供了丰富的数据结构和数据处理功能。下面是一些常用的pandas使用方法: 1. 导入pandas库: ```python import pandas as pd ``` 2. 创建DataFrame: DataFrame是pandas中最常用的数据结构,类似于Excel中的表格。可以通过多种方式创建DataFrame,比如从CSV文件、Excel文件、数据库查询结果等。 从字典创建DataFrame: ```python data = {'Name': ['Tom', 'John', 'Emma'], 'Age': [25, 30, 28], 'City': ['New York', 'London', 'Paris']} df = pd.DataFrame(data) ``` 从CSV文件创建DataFrame: ```python df = pd.read_csv('data.csv') ``` 3. 查看数据: 使用`head()`方法可以查看DataFrame的前几行,默认为前5行。 ```python df.head() ``` 4. 数据选择和过滤: 可以使用`[]`操作符或者`loc`、`iloc`方法来选择和过滤数据。 使用列名选择列: ```python df['Name'] ``` 使用`loc`方法选择行: ```python df.loc[0] # 选择第一行 df.loc[1:3] # 选择第二行到第四行 ``` 使用条件过滤数据: ```python df[df['Age'] > 25] # 选择年龄大于25的行 ``` 5. 数据排序: 使用`sort_values()`方法可以对DataFrame进行排序。 按照某一列升序排序: ```python df.sort_values('Age') ``` 按照多列排序: ```python df.sort_values(['Age', 'Name']) ``` 6. 数据统计: 使用`describe()`方法可以得到DataFrame中数值列的统计信息,如均值、标准差、最小值、最大值等。 ```python df.describe() ``` 7. 数据处理: pandas提供了丰富的数据处理功能,比如缺失值处理、重复值处理、数据转换等。 处理缺失值: ```python df.dropna() # 删除包含缺失值的行 df.fillna(value) # 将缺失值填充为指定值 ``` 处理重复值: ```python df.drop_duplicates() # 删除重复行 ``` 数据转换: ```python df['Age'] = df['Age'].astype(str) # 将Age列的数据类型转换为字符串类型 ``` 这只是pandas的一小部分功能介绍,pandas还有很多其他强大的功能,比如数据合并、分组聚合、时间序列处理等。如果你有具体的问题或者需要更深入的了解,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值