字符串操作

阅读: 4058     评论:2

Python内置的字符串操作和re正则模块可以帮我们解决很多场景下的字符串操作需求。但是在数据分析过程中,它们有时候比较尴尬,比如:

In [143]: dic= {'one':'feixue', 'two':np.nan, 'three':'tom', 'five':'jerry@film'}

In [144]: s = pd.Series(dic)

In [145]: s
Out[145]:
one          feixue
two             NaN
three           tom
five     jerry@film
dtype: object

我现在想将s中的字母都大写,通过Python内置字符串方法,你可能会这么设计:

In [159]: s.map(lambda x : x.upper())
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

但是,弹出了异常,原因是数据有一个缺失值NaN,这个值不是字符串,没有upper方法。

那怎么办呢?Pandas为这一类整体性的操作,提供了专门的字符串函数,帮助我们跳过缺失值等异常情况,对能够进行操作的每个元素进行处理:

In [160]: s.str.upper()
Out[160]:
one          FEIXUE
two             NaN
three           TOM
five     JERRY@FILM
dtype: object

这就是Series的str属性,在它的基础上甚至可以使用正则表达式的函数。

下面是部分可用的Series.str的字符串操作方法,名字基本和Python字符串内置方法相同:

  • cat :粘合字符串
  • contains:是否包含的判断
  • count:计数
  • extract:返回匹配的字符串组
  • endswith:以xx结尾判断
  • startswith:以xx开始判断
  • findall:查找
  • get:获取
  • isalnum:类型判断
  • isalpha:类型判断
  • isdecimal:类型判断
  • isdigit:类型判断
  • islower:是否小写
  • isnumeric:类型判断
  • isupper:是否大写
  • join:连接
  • len:长度
  • lower:小写
  • upper:大写
  • match:匹配
  • pad:将空白加到字符串的左边、右边或者两边
  • center:居中
  • repeat:重复
  • replace:替换
  • slice:切片
  • split:分割
  • strip:脱除
  • lstrip:左脱除
  • rstrip:右脱除

最后,思考一下,DataFrame怎么处理str呢?


 随机和抽样 分层索引 

评论总数: 2


点击登录后方可评论

DataFrame没有str属性,只能一列一列的用str属性了



那么多方法,博主偷懒不举例。