最新Django3.1大神之路视频!长达77小时、17G、233节 ,全方位无死角深入源码的专注教程!包含完整的模型层、数据迁移、 类视图、异步视图、日志、认证权限和开发工具等更多文字教程未包含的内容。免费章节pan.baidu.com/s/1dqGWNwmBnLxhM7DnXiePIQ 提取码:ko4y 。查看视频介绍点我
学习交流QQ群:787071373
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属性了
那么多方法,博主偷懒不举例。