1. import pandas as pd
  2. import numpy as np
  3.  
  4. s = pd.Series(['A', 'b', 'c', 'bbhello', '', np.nan, 'hj'])
  5. df = pd.DataFrame({'key1': list('abcdef'),
  6. 'key2': ['hee', 'fv', 'w', 'hija', '', 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 True
  100. 4 False
  101. 5 NaN
  102. 6 False
  103. dtype: object
  104. 判断结束是否为"o",endswith() 0 False
  105. 1 False
  106. 2 False
  107. 3 True
  108. 4 False
  109. 5 NaN
  110. 6 False
  111. dtype: object
  112. '''
  113. # 字符串常用方法 --strip
  114.  
  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 jack
  123. 1 jill
  124. 2 jesse
  125. dtype: object
  126. --------
  127. A B
  128. 0 -0.333042 -0.467830
  129. 1 0.605179 -0.658910
  130. 2 -0.490881 -0.639754
  131. --------
  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 jack
  140. 1 jill
  141. 2 jesse
  142. dtype: object
  143. --------
  144. 0 jack
  145. 1 jill
  146. 2 jesse
  147. dtype: object
  148. --------
  149. 0 jack
  150. 1 jill
  151. 2 jesse
  152. dtype: object
  153. '''
  154. df2.columns = df2.columns.str.strip()
  155. print(df2)
  156. '''
  157. A B
  158. 0 -0.801508 1.650113
  159. 1 -0.669556 -1.195999
  160. 2 0.277338 -0.727100
  161.  
  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- b
  170. 0 -1.225938 0.296270
  171. 1 0.769037 2.794032
  172. 2 -1.686818 0.109314
  173. '''
  174. # 字符串常用方法 -- spilt、rsplit
  175. 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,c
  180. 1 1,2,3
  181. 2 [a,,,c]
  182. 3 NaN
  183. dtype: object
  184. 0 [a, b, c]
  185. 1 [1, 2, 3]
  186. 2 NaN
  187. 3 NaN
  188. dtype: object
  189. '''
  190. # 直接索引得到一个list
  191. # 可以使用get或[]符号访问拆散列表中的元素
  192. print(s4.str.split(',').str[0])
  193. print(s4.str.split(',').str.get(0))
  194. '''
  195. 0 a
  196. 1 1
  197. 2 NaN
  198. 3 NaN
  199. dtype: object
  200. 0 a
  201. 1 1
  202. 2 NaN
  203. 3 NaN
  204. dtype: object
  205. '''
  206.  
  207. # 可以使用expand可以轻松扩展此操作以返回DataFrame
  208. # 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 NaN
  216. 3 NaN
  217. dtype: object
  218. --------
  219. 0 1 2
  220. 0 a b c
  221. 1 1 2 3
  222. 2 NaN NaN NaN
  223. 3 NaN NaN NaN
  224. '''
  225. print(s4.str.split(',', expand=True, n=1))
  226. '''
  227. 0 1
  228. 0 a b,c
  229. 1 1 2,3
  230. 2 NaN NaN
  231. 3 NaN NaN
  232. '''
  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 1
  239. 0 a b,c
  240. 1 1 2,3
  241. 2 NaN NaN
  242. 3 NaN NaN
  243. --------
  244. 0 1
  245. 0 a,b c
  246. 1 1,2 3
  247. 2 NaN NaN
  248. 3 NaN NaN
  249. '''
  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 key2
  258. 0 a,b,c a-b-c
  259. 1 1,2,3 1-2-3
  260. 2 [:,,, ] [:-.- ]
  261. --------
  262. 0 [a, b, c]
  263. 1 [1, 2, 3]
  264. 2 NaN
  265. Name: key2, dtype: object
  266. '''
  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 k203
  274. 0 a,b,c a-b-c a b c
  275. 1 1,2,3 1-2-3 1 2 3
  276. 2 [:,,, ] [:-.- ] NaN NaN NaN
  277. '''

pandas文本处理的更多相关文章

  1. Pandas文本操作之读取操作

    读写文本格式的数据 pandas中的解析函数 函数 说明 read_csv 从文件.url.文件型对象中加载带分隔符的数据,默认分隔符为逗号 read_table 从文件.url.文件型对象中加载带分 ...

  2. pynlpir + pandas 文本分析

    pynlpir是中科院发布的一个分词系统,pandas(Python Data Analysis Library) 是python中一个常用的用来进行数据分析和统计的库,利用这两个库能够对中文文本数据 ...

  3. Pandas文本数据处理

    先初始化数据 import pandas as pd import numpy as np index = pd.Index(data=["Tom", "Bob" ...

  4. Pandas 文本数据

    Pandas针对字符串配备的一套方法,使其易于对数组的每个元素(字符串)进行操作. 1.通过str访问,且自动排除丢失/ NA值 # 通过str访问,且自动排除丢失/ NA值 s = pd.Serie ...

  5. Pandas: 如何将一列中的文本拆分为多行? | Python

    Pandas: 如何将一列中的文本拆分为多行? 在数据处理过程中,经常会遇到以下类型的数据: 在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行. 在上图中,列名 ...

  6. Python文本数据互相转换(pandas and win32com)

    (工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...

  7. pandas 处理文本数据

    import pandas as pd import numpy as np 常规的字符串操作 s = pd.Series(['A',"B","C"," ...

  8. 基于pandas python sklearn 的美团某商家的评论分类(文本分类)

    美团店铺评价语言处理以及分类(NLP) 第一篇 数据分析部分 第二篇 可视化部分, 本文是该系列第三篇,文本分类 主要用到的包有jieba,sklearn,pandas,本篇博文主要先用的是词袋模型( ...

  9. 使用Pandas: str.replace() 进行文本清洗

    前段时间参加了Kaggle上的Mercari Price Suggestion Challenge比赛,收获良多,过些时候准备进行一些全面的总结,本篇文章先谈一个比赛中用到的小技巧. 这个比赛数据中有 ...

随机推荐

  1. 如何在Mac OS X 中运行Lua (Running Lua on Mac OS X)

    参考文章:1) http://www.oschina.net/question/12_769552) http://rudamoura.com/luaonmacosx.html 最近在为iOS开发游戏 ...

  2. Oracle高水位线

    Oracle高水位线 https://blog.csdn.net/jx_jy/article/details/50607790 Oracle高水位线的概念 Oracle里面的对象放到存储级别都称为se ...

  3. A bad vacation

    My story happened in the winter of 2012, the first year I began to work in Beijing. It was a cold we ...

  4. IDEA中Spark往Hbase中写数据

    import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.io.ImmutableBytesWr ...

  5. F5 SSLVPN 的安装问题

    WIN10下安装SSLVPN问题 1.右击计算机 -->选择管理-->查看安装的插件是否显示感叹号 2.如果显示感叹号-->则进行更新驱动-->>手动选择-->网络 ...

  6. PCB 圆形板切边算法 实现

    在工程CAM处理圆形拼板是个头疼的问题,需人工程师自行设计切边 满足可以拼板并且拼板后锣板板边没有内角,不然会影响装配 1.原始单 PCS圆形板 此外形如果不采用邮票孔连接的话,采V-CUT连接须采用 ...

  7. js实现页面的全屏与退出

    1.在data里面定义: data(){ return{ isScreen:false, } } //是否显示全屏 fullScreen(event){ this.isScreen = !this.i ...

  8. ECMA里面的操作符,

    ECMA里面的操作符,描述了一组操作于数据值的操作符,包括算数操作符.位操作符,关系操作符和相等操作符,ECMAscript操作符与之不同的是,他们能够使用于很多值,例如字符串.数字值.布尔值.甚至对 ...

  9. vue-cli 升级至 webpack 4 指北

    时至今日(2018-7-11),vue-cli 任然未稳定支持至webpack4,所以我自己也来创建一个 vue 初始化模板 不过大致的原因我也能猜到,因为很多插件仍然是一个不稳定的点,比如我在创建中 ...

  10. python自动化测试学习笔记-unittest参数化

    做接口测试的时候,当一个参数需要输入多个值的时候,就可以使用参数来实现: python中unittest单元测试,可以使用nose_parameterized来实现: 首先需要安装:pip  inst ...