pandas文本处理
发布日期:2021-10-22 18:11:17 浏览次数:10 分类:技术文章

本文共 5497 字,大约阅读时间需要 18 分钟。

1 import pandas as pd  2 import numpy as np  3   4 s = pd.Series(['A', 'b', 'c', 'bbhello', '123', np.nan, 'hj'])  5 df = pd.DataFrame({
'key1': list('abcdef'), 6 'key2': ['hee', 'fv', 'w', 'hija', '123', np.nan]}) 7 print(s) 8 print('-'*8) 9 print(df) 10 print('-'*8) 11 ''' 12 0 A 13 1 b 14 2 c 15 3 bbhello 16 4 123 17 5 NaN 18 6 hj 19 dtype: object 20 -------- 21 key1 key2 22 0 a hee 23 1 b fv 24 2 c w 25 3 d hija 26 4 e 123 27 5 f NaN 28 -------- 29 ''' 30 # 直接通过.str调用字符串方法,可以对Series、DataFrame使用,自动过滤NaN值 31 print(s.str.count('b')) 32 ''' 33 0 0.0 34 1 1.0 35 2 0.0 36 3 2.0 37 4 0.0 38 5 NaN 39 6 0.0 40 dtype: float64 41 ''' 42 print(df['key2'].str.upper()) 43 ''' 44 0 HEE 45 1 FV 46 2 W 47 3 HIJA 48 4 123 49 5 NaN 50 Name: key2, dtype: object 51 ''' 52 # 将所有的列名改为大写 53 df.columns = df.columns.str.upper() 54 print(df) 55 ''' 56 KEY1 KEY2 57 0 a hee 58 1 b fv 59 2 c w 60 3 d hija 61 4 e 123 62 5 f NaN 63 ''' 64 # 字符串常用方法 --lower,upper,len,starswith,endswith 65 66 print('小写,lower()',s.str.lower()) 67 print('大写,upper()',s.str.upper()) 68 print('长度,len()',s.str.len()) 69 print('判断起始是否为b,startswith()',s.str.startswith('b')) 70 print('判断结束是否为"o",endswith()',s.str.endswith('o')) 71 ''' 72 小写,lower() 0 a 73 1 b 74 2 c 75 3 bbhello 76 4 123 77 5 NaN 78 6 hj 79 dtype: object 80 大写,upper() 0 A 81 1 B 82 2 C 83 3 BBHELLO 84 4 123 85 5 NaN 86 6 HJ 87 dtype: object 88 长度,len() 0 1.0 89 1 1.0 90 2 1.0 91 3 7.0 92 4 3.0 93 5 NaN 94 6 2.0 95 dtype: float64 96 判断起始是否为b,startswith() 0 False 97 1 True 98 2 False 99 3 True100 4 False101 5 NaN102 6 False103 dtype: object104 判断结束是否为"o",endswith() 0 False105 1 False106 2 False107 3 True108 4 False109 5 NaN110 6 False111 dtype: object112 '''113 # 字符串常用方法 --strip114 115 s2 = pd.Series([' jack', 'jill ', ' jesse '])116 df2 = pd.DataFrame(np.random.randn(3, 2), columns=[' A ', ' B'], index=range(3))117 print(s2)118 print('-'*8)119 print(df2)120 print('-'*8)121 '''122 0 jack123 1 jill 124 2 jesse 125 dtype: object126 --------127 A B128 0 -0.333042 -0.467830129 1 0.605179 -0.658910130 2 -0.490881 -0.639754131 --------132 '''133 print(s2.str.strip())134 print('-'*8)135 print(s2.str.lstrip())136 print('-'*8)137 print(s2.str.rstrip())138 '''139 0 jack140 1 jill141 2 jesse142 dtype: object143 --------144 0 jack145 1 jill 146 2 jesse 147 dtype: object148 --------149 0 jack150 1 jill151 2 jesse152 dtype: object153 '''154 df2.columns = df2.columns.str.strip()155 print(df2)156 '''157 A B158 0 -0.801508 1.650113159 1 -0.669556 -1.195999160 2 0.277338 -0.727100161 162 '''163 164 # 字符串常用方法 -- replace()165 df3 = pd.DataFrame(np.random.randn(3, 2), columns=[' A a', ' B b'], index=range(3))166 df3.columns = df3.columns.str.replace(' ', '-', n=2)167 print(df3)168 '''169 -A-a -B- b170 0 -1.225938 0.296270171 1 0.769037 2.794032172 2 -1.686818 0.109314173 '''174 # 字符串常用方法 -- spilt、rsplit175 s4 = pd.Series(['a,b,c', '1,2,3', ['a,,,c'], np.nan])176 print(s4)177 print(s4.str.split(','))178 '''179 0 a,b,c180 1 1,2,3181 2 [a,,,c]182 3 NaN183 dtype: object184 0 [a, b, c]185 1 [1, 2, 3]186 2 NaN187 3 NaN188 dtype: object189 '''190 # 直接索引得到一个list191 # 可以使用get或[]符号访问拆散列表中的元素192 print(s4.str.split(',').str[0])193 print(s4.str.split(',').str.get(0))194 '''195 0 a196 1 1197 2 NaN198 3 NaN199 dtype: object200 0 a201 1 1202 2 NaN203 3 NaN204 dtype: object205 '''206 207 # 可以使用expand可以轻松扩展此操作以返回DataFrame208 # n 参数限制分割数209 print(s4.str.split(','))210 print('-' * 8)211 print(s4.str.split(',', expand=True))212 '''213 0 [a, b, c]214 1 [1, 2, 3]215 2 NaN216 3 NaN217 dtype: object218 --------219 0 1 2220 0 a b c221 1 1 2 3222 2 NaN NaN NaN223 3 NaN NaN NaN224 '''225 print(s4.str.split(',', expand=True, n=1))226 '''227 0 1228 0 a b,c229 1 1 2,3230 2 NaN NaN231 3 NaN NaN232 '''233 # rsplit类似于split,反向工作,即从字符串的末尾到字符串的开头234 print(s4.str.split(',', expand=True, n=1))235 print('-' * 8)236 print(s4.str.rsplit(',', expand=True, n=1))237 '''238 0 1239 0 a b,c240 1 1 2,3241 2 NaN NaN242 3 NaN NaN243 --------244 0 1245 0 a,b c246 1 1,2 3247 2 NaN NaN248 3 NaN NaN249 '''250 251 df4 = pd.DataFrame({
'key1': ['a,b,c', '1,2,3', [':,,, ']],252 'key2': ['a-b-c', '1-2-3', [':-.- ']]})253 print(df4)254 print('-'*8)255 print(df4['key2'].str.split('-'))256 '''257 key1 key2258 0 a,b,c a-b-c259 1 1,2,3 1-2-3260 2 [:,,, ] [:-.- ]261 --------262 0 [a, b, c]263 1 [1, 2, 3]264 2 NaN265 Name: key2, dtype: object266 '''267 # 通过索引获取分割后的元素268 df4['k201'] = df4['key2'].str.split('-').str[0]269 df4['k202'] = df4['key2'].str.split('-').str[1]270 df4['k203'] = df4['key2'].str.split('-').str[2]271 print(df4)272 '''273 key1 key2 k201 k202 k203274 0 a,b,c a-b-c a b c275 1 1,2,3 1-2-3 1 2 3276 2 [:,,, ] [:-.- ] NaN NaN NaN277 '''

 

转载于:https://www.cnblogs.com/xshan/p/10803333.html

转载地址:https://blog.csdn.net/weixin_30402343/article/details/94819871 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Appium AndroidKeyCode
下一篇:http协议

发表评论

最新留言

不错!
[***.144.177.141]2024年04月07日 07时39分18秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

基于SnowFlake算法如何让分库分表中不同的ID落在同一个库的算法的实现 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之分表解决方案(一) 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之关联查询解决方案(三) 2019-04-27
Linux文件管理参考 2019-04-27
FTP文件管理项目(本地云)项目日报(二) 2019-04-27
FTP文件管理项目(本地云)项目日报(三) 2019-04-27
FTP文件管理项目(本地云)项目日报(七) 2019-04-27
FTP文件管理项目(本地云)项目日报(九) 2019-04-27
以练代学设计模式 -- FTP文件管理项目 2019-04-27
FTP文件管理项目(本地云)项目日报(十) 2019-04-27
学以致用设计模式 之 “组合模式” 2019-04-27
我用过的设计模式(7)--享元模式 2019-04-27
MySQL数据库从入门到实战应用(学习笔记一) 2019-04-27
MySQL数据库从入门到实战应用(学习笔记二) 2019-04-27
种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林 2019-04-27
【C++】攻克哈希表(unordered_map) 2019-04-27
转:【答学员问】- 该如何根据岗位学习相关技能 2019-04-27
转:【答学员问】有什么经验教训,是你在面试很多次之后才知道的? 2019-04-27
消息队列:解耦、异步、削峰,现有MQ对比以及新手入门该如何选择MQ? 2019-04-27
【奇技淫巧】-- 三角形最小路径和 2019-04-27