pandas文本處理

来源:https://www.cnblogs.com/xshan/archive/2019/05/02/10803333.html
-Advertisement-
Play Games

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('abcde... ...


  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     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 '''

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 - context 源碼 可以先瞭解官方 context.go 輪廓. 這裡捎帶保存一份當前 context 版本備份. golang 標準庫 1.7 版本引入 context 包, 用於 golang 函數鏈安全的管理和控制. 說真 golang context 實現非常漂亮, 代碼中說明也 ...
  • 有了模板方法,你就可以像專家一樣復用代碼,同時保持對演算法的控制 ...
  • 前言 先說一下IP協議和TCP協議,IP協議是無連接的通信協議,IP不會占用兩個設備之間通信的線路,IP實際上主要負責將每個數據包路由至目的地,但是IP協議並沒有能夠確保數據包是否到達,傳過去的數據包是否按照順序排列,所以IP數據包是不可靠的。而解決數據不可靠的問題就是由TCP協議來完成,接下來就介 ...
  • 模擬頁式虛擬存儲管理中硬體的地址轉換和用先進先出調度演算法處理缺頁中斷 ...
  • day21 01包的初識 包:把解決一類問題的模塊放在同一個文件夾裡面 包(一個包裡面通常會含有_init_.py文件(python2裡面必須有),但是後面的就沒有要求一定要有了) 同樣導入的時候有import和 from import 兩種 註意:凡是導入是帶點的,點的左邊必須是一個包模塊,對於f ...
  • 題目 "P2472 [SCOI2007]蜥蜴" 解析 這個題思路比較清晰,本(qi)來(shi)以(jiu)為(shi)無腦建圖跑最大流,結果掛了,整了一個小時後重新建圖才過的。 建立一個超級源點和一個超級匯點, 每個石柱都有其固定的通過的次數,也就是說我們要限制其通過次數,怎麼限制呢, 拆點 ,把 ...
  • 1.CPU 記憶體 硬碟 操作系統 CPU:電腦的運算和控制中心,相當於人類的大腦。 記憶體:用於暫時存放CPU中的運算數據,以及與硬碟等外部存儲器交換的數據。(暫時存儲數據,臨時載入數據及應用程式) 4G,8G,16G,32G 速度快,效率高,造價高 斷電數據丟失 硬碟:磁碟,長期存儲數據,存放文件 ...
  • ``` // // main.cpp // 運算符重載(Overloading) // 預設複製構造函數(Default Copy Constructor) // Created by mac on 2019/4/29. // Copyright © 2019年 mac. All rights re ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...