1、dataframe的列
df.columns.str.strip()
df.columns.str.lower()
#處理列-清理開頭和結尾的白空格,將所有的名稱都換為小寫,並且將其餘的空格都替換為下劃線
df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_')
2、索引
idx = pd.index([' jack', 'jill ', ' jesse ', 'frank'])
idx.str.strip()
idx.str.lstrip()
idx.rstrip()
3、series
s.str.lower()
s.str.upper()
s.str.len()
s.str.split('_')
s.str.split('_').str.get(1)
#切割s.str.split('_', expand=true, n=1)--n:表示切割次數,expand:是否返回乙個資料表或乙個序列
replace:預設使用正規表示式
s3 = pd.series(['a', 'b', 'c', 'aaba', 'baca','', np.nan, 'caba', 'dog', 'cat'])
s3匹配替換字元:s3.str.replace('^.a|dog', 'xx-xx ', case=false)
不需要寫轉義字元:dollars.str.replace('-$', '-', regex=false)
傳入可呼叫物件:
拼接:s.str.cat(sep=',')-sep預設空字串 預設情況下,缺失值會被忽略,使用np_rep可以對缺失值進行賦值
pd.series(['a', 'b', np.nan, 'd'])--t.str.cat(sep=',', na_rep='-')
.拼接序列和其他列表型物件為新的序列(必須要確保長度相同)--s.str.cat(['a', 'b', 'c', 'd'])
.任何一端的缺失值都會導致之中結果為缺失值,除非使用na_rep--s.str.cat(t, na_rep='-')
索引:s.str[0],s.str[1]
extract通過正規表示式來提取字串,沒有匹配成功的一行返回nan,物件總是object
pd.series(['a1', 'b2', 'c3']).str.extract(r'([ab])(\d)', expand=false)
捕獲乙個組:
s = pd.series(["a1", "b2", "c3"], ["a11", "b22", "c33"])
s.index.str.extract("(?p[a-za-z])", expand=false)
捕獲多個組:
expand=true,會返回乙個資料表,expand=false會丟擲valueerror
捕獲乙個組:expand=false
捕獲乙個組:expand=true
捕獲多個組:expand=true
contains:測試匹配或包含模式的字串
pattern = r'[0-9][a-z]'
pd.series(['1', '2', '3a', '3b', '03c']).str.contains(pattern)
Pandas字串資料處理
import pandas as pd df pd.read excel 成績表 統計 xls sheet name 寫入 新 df df 性別 astype str 字串切片 df 身高 num df 身高 str 0 3 去除 df 身高 num df 身高 str.strip cm df 身高...
字串處理 字串反轉
請原諒博主今天很閒,於是乎博主又開始更新微博了。這次要更新的問題是 編寫乙個函式,反轉乙個單詞的順序。例如 do or do not,there is no try.就要反轉成 try.no is there not,do or do 大家要認真看看這道題,這道題和大家想象的貌似有點不同。首先字串反...
使用pandas批量處理向量化字串
進行已經向量化後的字串資料,可以使用 pandas 的series 資料物件的 map方法。這樣,對於未經向量化的資料也可以先進行資料的向量化轉換然後再進行相應的處理。舉例實現字串資料的操作,編寫 如下 1 usr bin python 2 3 import numpy asnp 4 import ...