pandas:快速处理字符串方法

前言

当我们遇到一个超级大的DataFrame,里面有一列类型为字符串,要将每一行的字符串都用同一方式进行处理,一般会想到遍历整合DataFrame,但是如果直接这样做的话将会耗费很长时间,有时几个小时都处理不完。于是就有了本篇文章所要分享给大家的:pandas快速处理字符串方法。


提示:为方便快捷地解决问题,本文仅介绍主要功能。

一、向量化字符串操作简介

向量化操作简化了纯数值的数组操作语法,我们不需要再担心数组的长度或维度,只需要把中心放在操作上面。而对字符串的向量化需要工具包的支持,如Numpy就没办法直接对字符串进行向量化操作,只能通过繁琐的循环来实现。Pandas则可以很好的处理这类问题。

二、str方法的简介

Python会处理字符串起来会很容易,作为工具包的Pandas同样可以简单快速的处理字符串,几乎把Python内置的字符串方法都给复制过来了,这种方法就是Pandas内置的str方法,通俗来说就可以将series和index对象中包含字符串的部分简单看作单个字符串处理,达到批量简单快速处理的目的。

三、str方法介绍

1、类似Python处理字符串的方法

与Python内置的字符串处理方法类似,包含以下函数:

len()lower()translate()islower()
ljust()upper()startswith()isupper()
rjust()find()endswith()isnumeric()
center()rfind()isalnum()isdecimal()
zfill()index()isalpha()split()
strip()rindex()isdigit()rsplit()
rstrip()capitalize()isspace()partition()
lstrip()swapcase()istitle()rpartition()

除此函数之外,也可以直接通过切片方法对字符串进行批量处理。下面是例子。

import pandas as pd
str_data = pd.DataFrame({'name':['Verne Raymond','Chapman Becher','Patrick George','Saxon MacArthur'],
                         'age':[18,22,21,16]})
Out[0]: 
              name  age
0    Verne Raymond   18
1   Chapman Becher   22
2   Patrick George   21
3  Saxon MacArthur   16

len()函数使用:

str_data['name'].str.len()
Out[1]: 
0    13
1    14
2    14
3    15
Name: name, dtype: int64

split()函数使用:

str_data['name'].str.split(' ')
str_data['name'].str.split(' ',expand=True)#将分开的字符串放在两列
Out[2]: 
0      [Verne, Raymond]
1     [Chapman, Becher]
2     [Patrick, George]
3    [Saxon, MacArthur]
Name: name, dtype: object
Out[3]: 
         0          1
0    Verne    Raymond
1  Chapman     Becher
2  Patrick     George
3    Saxon  MacArthur

其他函数都是同样的方式,函数具体参数可以参考官方文档:pandas.Series.

直接对字符串进行切片:

str_data['name'].str[:5]
Out[4]: 
0    Verne
1    Chapm
2    Patri
3    Saxon
Name: name, dtype: object

2、使用正则表达式方法

方法描述
match()在每个元素上调用re.match(),返回布尔值
extract()在每个元素上调用re.match(),返回作为字符串的每个分组
findall()在每个元素上调用re.findall()
replace()将模式串的每次出现替换为一些其它字符串
contains()在每个元素上调用re.search(),返回布尔值
count()统计模式串的出现次数
split()等价于str.split(),但是接受正则表达式
rsplit()等价于str.rsplit(),但是接受正则表达式

下面是例子:

replace()函数使用

str_data['name'].str.replace(' ','-')
Out[5]: 
0      Verne-Raymond
1     Chapman-Becher
2     Patrick-George
3    Saxon-MacArthur
Name: name, dtype: object

extract()函数使用

str_data['name'].str.extract('([A-Za-z]+)')   
Out[6]: 
         0
0    Verne
1  Chapman
2  Patrick
3    Saxon

正则表达式方法这里不再赘述。

四、总结

这里介绍了Pandas在处理字符串上提供的一些快速处理方法,将重点部分进行阐述,如有错误请大家指正。后面还会讲解类似快速处理方法如:map()、apply()、applymap()等。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值