ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ***** dataframe与series中经常有文本格式的数据存在,pandas提供了良好的工具用来处理这些文本 ``` #用列表创建Series s = pd.Series(['A', 'B', 'C', 'Aaba ', ' Baca', 'CABA ', 'dog', 'cat']) ``` ![](https://img.kancloud.cn/be/58/be5811e1612a93d6223f222e391c4fe3_155x193.png) ``` #调用s.str将series-S变为String 然后再去除两端空格 s.str.strip() # 去除空格 ``` ![](https://img.kancloud.cn/06/ab/06aba2e6f60e742d624fdd9aa1007041_166x193.png) ``` # 将字符串转换成大写 s.str.upper() ``` ![](https://img.kancloud.cn/90/9d/909d8ad42d5a2f5b9c4c40e14f2cb026_182x197.png) ``` #pandas中字符串函数可以连用,strip之后仍然是series需要再调用str变为字符串,并寻找结尾为a的字符串 s.str.strip().str.endswith("a") ``` ![](https://img.kancloud.cn/46/3f/463ff735463d7608c35f6dc6f41e6d1d_162x198.png) ``` #外面再套一个series,会返回结果为true的值 s[s.str.strip().str.endswith("a")] ``` ![](https://img.kancloud.cn/1b/a4/1ba45d1ccecf57ec042a1583a3eea5cb_180x76.png) ***** 一个很常用的场景就是当你的index或者column名称前后包含了空格的时候,你可以用str的方法剔除这些空格,从而避免不必要的麻烦 ``` #注意age和name前后有空格 a = {"name ":["xiaoming","xiaohong","xiaogang"]," age":[12,13,14]} test = pd.DataFrame(data = a) ``` #此时列名age和name有空格,但看不出来 ![](https://img.kancloud.cn/79/25/7925ee332c02bb446f4e3c0881400241_331x219.png) 这时 ``` #会报错,是test[' age'] test['age'] ``` 去掉列名前后空格,这次打印正确 ``` test.columns = test.columns.str.strip() test['age'] ``` ![](https://img.kancloud.cn/bb/26/bb2646cfe2095ef33e719f13ed0c5e19_248x84.png) ### 1.5.1. Splitting and Replacing String split方法用于根据某个分隔符对字符进行分割,返回一个列表 ``` #取Player列所有数据 df['Player'] ``` ![](https://img.kancloud.cn/35/06/35065d0761afe2fb6888f2939f2dc951_395x231.png) 目标将姓和名进行分割 ``` #.str将series变成字符串对象再用split 结果 df['Player'].str.split(" ") ``` ![](https://img.kancloud.cn/6f/73/6f7392c1bbbfae44efe4e244d02be236_316x212.png) ***** 取得Player列分割后所有列表的第一个元素(姓) ``` # 使用get方法获取指定位置的元素 df['Player'].str.split(" ").str.get(1) ``` ![](https://img.kancloud.cn/e3/85/e3856036196e5b7916cd30e1b10ee3ca_233x228.png) ``` # 使用expand方法,将分割出的列表变为多个列,expand-扩展 df['Player'].str.split(" ",expand = True) ``` ![](https://img.kancloud.cn/aa/b1/aab18303d4d7e5d5ab3fb1b92018082d_238x236.png) ***** 使用\[\]对字符串的位置进行索引选取 ``` #.str应用在Player列的每一个元素上,将series的元素变为字符串,对字符串使用切片索引选取 df['Player'].str[:3] ``` ### 1.5.2. Extracting substring 通过正则表达式选取字符串中的子集