pandas 学习汇总15 - str函数(全面 tcy)

str函数   2018/12/5

汇总52个str函数,本人经过全部测试,简单的容易理解的没写例程,你可根据简表进行测试;复杂难以理解的

都附加有例程,共有12个例程。简表注释内容根据测试结果编写,而不是按简单的翻译,有时是难以理解的。

1.函数表

No 字符串处理 类似Python中str忽略Na;适用于Series / Index
0 使用方式:s.str.cat() 返回序列索引或其他
1 capitalize() 字符串转大写
2 cat([others, sep, na_rep, join]) 用分隔符连接字符串;返回str或原对象构架
3 center(width[, fillchar]) 用附加字符填充字符串的左侧和右侧
4 contains(‘'is') 判断字符串中是否包含子串
5 count(pat[, flags]) 计算字符串中子串出现次数
6 decode(encoding[, errors]) 字节解码
7 encode(encoding[, errors]) 字符串编码
8 endswith(pat[, na]) 测试字符串结尾是否是特定子串 true
9 extract(pat[, flags, expand]) 从正则表达式pat中提取第一个匹配字符;结果为1个字符
10 extractall(pat[, flags]) 从正则表达式pat提取所有匹配的,返回组
11 find(sub[, start, end]) 查找子串首索引,子串包含在[start:end]
12 findall(pat[, flags]) 查找所有符合正则表达式的字符,以数组形式返回
13 get(i) 从指定位置提取字符
14 get_dummies([sep]) 用sep拆分每个字符串,返回一个虚拟/指示变量框
15 index(sub[, start, end]) 子串最低索引,子串范围[start:end];
   - 任何一个系列中的元素中无子串引发异常
16 isalnum() 检查所有字符是否为字母数字
17 isalpha() 检查是否都是字母
18 isdecimal() 检查是否都是十进制
19 isdigit() 检查是否都是数字
20 islower() 检查是否都是小写
21 isnumeric() 检查是否都是数字
22 isspace() 检查是否都是空格
23 istitle() 检查是否都是标题
24 isupper() 检查是否都是大写
25 join(sep) 用分隔符连接所有字符;同一级有非str返回Na
26 len() 计算每个字符串的长度
27 ljust(width[, fillchar]) 使用附加字符填充字符串的右侧
28 lower() 字符串转小写
29 lstrip([to_strip]) 左侧删除空格(包括换行符)或其他str
30 match(pat[, case, flags, na, …]) 确定每个字符串是否与正则表达式匹配。
31 normalize(form) 返回字符串的Unicode普通表单
32 pad(width[, side, fillchar]) 指定左或右填充字符补齐字符串
33 partition([pat, expand]) 分隔符拆分为3部分,分隔符左,分隔符,分隔符右
34 repeat(repeats) 重复每个元素指定的次数
35 replace(a,b) 将值a替换为值b。
36 rfind(sub[, start, end]) 右边查找子串索引,子串包含在[start:end]
37 rindex(sub[, start, end]) 返回每个元素中子串的最高索引,子串范围[start:end]
   - 任何一个查找不到则异常
38 rjust(width[, fillchar]) 使用附加字符填充字符串的左侧
39 rpartition([pat, expand]) 右拆分成3部分含分隔符
40 rsplit([pat, n, expand]) 分隔符字符串右边拆分字符串
41 rstrip([to_strip]) 右侧删除空格(包括换行符)
42 slice([start, stop, step]) 切片截取字符串
43 slice_replace([start, stop, repl]) 用另一个值替换字符串的位置切片;比较复杂看实例
44 split(['', n, expand]) 按分隔符或子串拆分字符串
45 startswith('st') 测试字符串开头是否匹配子串True
46 strip('') 删除字符串左右空白(包括换行符)或删除其他左右字符串
47 swapcase() 变换字母大小写
48 title() 字符串转标题
49 translate(table[, deletechars]) 通过映射表映射字符串中的所有字符
50 upper() 字符串转大写
51 wrap(width, **kwargs) 长字符串换行,#结果插入换行符\n
52 zfill(width) 用0填充字符串的左侧

 2实例

text="this is string example!"
s=pd.Series(text.split())

# 0 this
# 1 is
# 2 string
# 3 example!
# dtype: object

# 实例1:index
s.str.index('s')#必须每个元素中都含有‘s',:否则异常  
# 实例2:translate字符串映射表 
intab='aeiou'
outtab='12345'
trantab=str.maketrans(intab,outtab)
# {97: 49, 101: 50, 105: 51, 111: 52, 117: 53}

s.str.translate(trantab)
# 0 th3s
# 1 3s
# 2 str3ng
# 3 2x1mpl2!
# dtype: object  
# 实例3:
s.str.split('i')#拆分

# 0 [th, s]
# 1 [, s]
# 2 [str, ng]
# 3 [example!]
# dtype: object  
# 实例4:抽取匹配的字符串出来,注意要加上括号,把你需要抽取的东西标注上 
s.str.extract("([d-z])")#提取第一个匹配字符
# 0
# 0 t
# 1 i
# 2 s
# 3 e

# 实例5:
s.str.extractall("([d-z])")#提取所有匹配字符

#            0
#   match
# 0  0       t
#    1       h
#    2       i
#    3       s
# 1  0       i
#    1       s
# 2  0       s
#    1       t
#    2       r
#    3       i
#    4       n
#    5       g
# 3  0       e
#    1      x
#    2      m
#    3      p
#    4      l
#    5      e
# 实例6:unicodedata.normalize(form,unistr )
# 返回Unicode字符串unistr的普通表单表单。
# 表单的有效值为 “NFC”,“NFKC”,“NFD”和“NFKD”。

# 正规形式D(NFD)也称为规范分解,并将每个字符转换为其分解形式。
# 普通形式C(NFC)首先应用规范分解,然后再次组合预组合字符。
# 普通形式KD(NFKD)将应用兼容性分解,即将所有兼容性字符替换为其等效字符。
# 正常形式KC(NFKC)首先应用兼容性分解,然后是规范组合物。

import unicodedata
unicodedata.normalize('NFD', '\u00C7').encode('utf-8')# 'Ç'
unicodedata.normalize('NFD', '\u0043') # 'C'
unicodedata.normalize('NFD', '\u0327') # '̧'
unicodedata.normalize('NFD', '\u0043\u0327') # 'Ç'

unicodedata.normalize('NFD', '\u00C7').encode('ascii','ignore')#b'C'
b1=unicodedata.normalize('NFD', '\u00C7').encode('ascii','ignore')
b1.decode()# 'C'

title = u"Klüft skräms inför på fédéral électoral große"
unicodedata.normalize('NFKD', title).encode('ascii','ignore')
# 'Kluft skrams infor pa federal electoral groe'  
# 实例7:
v=s.str.encode('utf-8')
# 0 b'this'
# 1 b'is'
# 2 b'string'
# 3 b'example!'
# dtype: object

v.str.decode('utf-8')
# 0 this
# 1 is
# 2 string
# 3 example!
# dtype: object

# 实例8:
s.str.findall("[a-z]")

# 0 [t, h, i, s]
# 1 [i, s]
# 2 [s, t, r, i, n, g]
# 3 [e, x, a, m, p, l, e]
# dtype: object  
# 实例9: 
s.str.match("[d-z]")
# 0 True
# 1 True
# 2 True
# 3 True
# dtype: bool  
# 实例10:
s.str.join('-')

# 0 t-h-i-s
# 1 i-s
# 2 s-t-r-i-n-g
# 3 e-x-a-m-p-l-e-!

s1 = pd.Series([['Tom', 'Bob', 'Jim'],[1.1, 2.2, 3.3],['s1', np.nan, 's2'],
['s3', 4.5, 's4'], ['s5', ['s6', 's7'], 's8']])
# 0 [Tom, Bob, Jim]
# 1 [1.1, 2.2, 3.3]
# 2 [s1, nan, s2]
# 3 [s3, 4.5, s4]
# 4 [s5, [s6, s7], s8]
# dtype: object

s1.str.join('-')
# 0 Tom-Bob-Jim
# 1 NaN
# 2 NaN
# 3 NaN
# 4 NaN  
#实例11:字符串连接 
s = pd.Series(['a', 'b', np.nan, 'd'])
s.str.cat(sep=' ', na_rep='?') # 'a b ? d'

s.str.cat(['A', 'B', 'C', 'D'], sep=',')
# 0 a,A
# 1 b,B
# 2 NaN
# 3 d,D
# dtype: object

s.str.cat(['A', 'B', 'C', 'D'], sep=',', na_rep='-')
# 0 a,A
# 1 b,B
# 2 -,C
# 3 d,D
# dtype: object

t = pd.Series(['D', 'A', 'B', 'C'], index=[4, 1, 2, 3])
s.str.cat(t, join=None, na_rep='-')
# 0 aD
# 1 bA
# 2 -B
# 3 dC

s.str.cat(t, join='left', na_rep='-')
# 0 a-
# 1 bA
# 2 -B
# 3 dC
# dtype: object

s.str.cat(t, join='outer', na_rep='-')
# 0 a-
# 1 bA
# 2 -B
# 3 dC
# 4 -D
# dtype: object

s.str.cat(t, join='inner', na_rep='-')
# 1 bA
# 2 -B
# 3 dC
# dtype: object

s.str.cat(t, join='right', na_rep='-')
# 4 -D
# 1 bA
# 2 -B
# 3 dC
# dtype: object  
#实例12: 
s = pd.Series(['a', 'ab', 'abc', 'abdc', 'abcde'])

# 0 a
# 1 ab
# 2 abc
# 3 abdc
# 4 abcde
# dtype: object

# 指定“start”,意思是将“start”替换为“respont”,直到字符串的末尾
s.str.slice_replace(1, repl='X')
# 0 aX
# 1 aX
# 2 aX
# 3 aX
# 4 aX
# dtype: object

# 只指定‘top’,这意味着将字符串的开头替换为‘Stop’,其余的字符串将包括在内
s.str.slice_replace(stop=2, repl='X')
# 0 X
# 1 X
# 2 Xc
# 3 Xdc
# 4 Xcde
# dtype: object


# 指定‘start’和‘top’,这意味着从‘start’到‘top’的片段被替换为‘repl’。“开始”和“停止”之前或之后的所有内容都按原样包括在内。
s.str.slice_replace(start=1, stop=3, repl='X')
# 0 aX
# 1 aX
# 2 aX
# 3 aXc
# 4 aXde  

 

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/84842637