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字符串内置方法相同:
最后,思考一下,DataFrame怎么处理str呢?
DataFrame没有str属性,只能一列一列的用str属性了
那么多方法,博主偷懒不举例。