数据准备
import pandas as pd
Series =pd.Series (["a" ,"ab" ,"abc" ,"bc" ,"bb" ,"c" ])
大小写
是否小写
[In ]:Series.str.islower() #是否小写;str.islower()
[Out]:
0 True
1 True
2 True
3 True
4 True
5 True
dtype: bool
是否大写
[In ]:Series.str.isupper() #是否大写;str.isupper()
[Out]:
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
是否首字母大写
[In ]:Series.str.istitle() #是否首字母大写;str.istitle()
[Out]:
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
小写
[In ]:Series.str.lower() #小写;str.lower()
[Out]:
0 a
1 ab
2 abc
3 bc
4 bb
5 c
dtype: object
大写
[In ]:Series.str.upper() #大写 ;str.upper()
[Out]:
0 A
1 AB
2 ABC
3 BC
4 BB
5 C
dtype: object
首字母大写
[In ]:Series.str.capitalize() #首字母大写; str.capitalize()
[Out]:
0 A
1 Ab
2 Abc
3 Bc
4 Bb
5 C
dtype: object
只有首字母大写
[In ]:Series.str.title() #只大写首字母; str.title()
[Out]:
0 A
1 Ab
2 Abc
3 Bc
4 Bb
5 C
dtype: object
大小写转换
[In ]:Series.str.swapcase() #大小写互换;str.swapcase()
[Out]:
0 A
1 AB
2 ABC
3 BC
4 BB
5 C
dtype: object
拼贴
复制拼贴
[In ]:Series.str.repeat(2) #复制字符串并且拼贴
[Out]:
0 aa
1 abab
2 abcabc
3 bcbc
4 bbbb
5 cc
dtype: object
拼贴特定字符
[In ]:Series .str.cat(sep=" " ) #拼贴字符,可以对自己拼贴成字符串,也可以添加其他的字符
[Out ]:
'a ab abc bc bb c'
[In ]:Series .str.cat(["x" ,"x" ,"x" ,"x" ,"x" ,"x" ],sep=" " )
[Out ]:
0 a x
1 ab x
2 abc x
3 bc x
4 bb x
5 c x
dtype: object
填充/去空
左右填充
[In ]:Series.str.ljust(3,"x") #左移动,右侧填充;Series.str.rjust(width[, fillchar]);str.ljust()
[Out]:
0 axx
1 abx
2 abc
3 bcx
4 bbx
5 cxx
dtype: object
左边0填充
[In ]:Series.str.zfill(5) #左边填充; str.zfill()
[Out]:
0 0000a
1 000ab
2 00abc
3 000bc
4 000bb
5 0000c
dtype: object
居中两边填充
[In ]:Series.str.center(width=3,fillchar="x") #居中,并用字符填充空白; str.center()
[Out]:
0 xax
1 xab
2 abc
3 xbc
4 xbb
5 xcx
dtype: object
两边填充
[In ]:Series.str.pad(3, side='right', fillchar='x') #填充字符
[Out]:
0 axx
1 abx
2 abc
3 bcx
4 bbx
5 cxx
dtype: object
步长填充
[In ]:Series.str.join("x") #1个步长包裹;str.join()
[Out]:
0 a
1 axb
2 axbxc
3 bxc
4 bxb
5 c
dtype: object
步长换行
[In ]:Series.str.wrap(1) #按步长换行
[Out]:
0 a
1 a\nb
2 a\nb\nc
3 b\nc
4 b\nb
5 c
dtype: object
去除左右空白
[In ]:Series.str.lstrip(to_strip=None) #去除左边空白;Series.str.rstrip([to_strip]);str.lstrip();Series.str.strip([to_strip])
[Out]:
0 a
1 ab
2 abc
3 bc
4 bb
5 c
dtype: object
查找
Series索引范围查找
是否包含元素
[In ]:Series.str.contains("a") #是否包含元素,可以结合索引得到包含元素的字符;正则
[Out]:
0 True
1 True
2 True
3 False
4 False
5 False
dtype: bool
是否以…开头
[In ]:Series.str.startswith("a") #返回是否以a开头;str.startwith()
[Out]:
0 True
1 True
2 True
3 False
4 False
5 False
dtype: bool
是否以…结尾
[In ]:Series.str.endswith("c") #返回是否已c结尾; str.endswith()
[Out]:
0 False
1 False
2 True
3 True
4 False
5 True
dtype: bool
匹配
[In ]:Series.str.match("b") #正则
[Out]:
0 False
1 False
2 False
3 True
4 True
5 False
dtype: bool
字符串索引查找
返回索引
[In ]:Series.str.find("b") #返回字符串的最低的索引,可是设置查询的起点和终点;Series.str.rfind(sub[, start, end]);str.find()
[Out]:
0 -1
1 1
2 1
3 0
4 0
5 -1
dtype: int64
返回索引对应的值
[In ]:Series.str.get(1) #返回指定索引的值
[Out]:
0 NaN
1 b
2 b
3 c
4 b
5 NaN
dtype: object
[In]:Series.str.index("bb") #Series.str.rindex(sub[, start, end]);str.index
计数
传入字符的数量
[In ]:Series.str.count("b") #计算每个字符包含传入字符的数量
[Out]:
0 0
1 1
2 1
3 1
4 2
5 0
dtype: int64
列元素量
[In ]:Series.count() #相当于len()
[Out]:
6
统计元素数量
[In ]:Series.value_counts() #计算值的出现次数
[Out]:
c 1
bc 1
a 1
ab 1
abc 1
bb 1
dtype: int64
分割
分割字符,保留分隔符
[In ]:Series.str.partition(pat='b', expand=True) #分割字符,保留分隔符;Series.str.rpartition(pat='b', expand=True)
[Out]:
0 1 2
0 a
1 a b
2 a b c
3 b c
4 b b
5 c
分割字符
[In]: Series.str.split("b" ) #分割字符串
[Out]:
0 [a ]
1 [a , ]
2 [a , c]
3 [, c]
4 [, , ]
5 [c]
dtype: object
截取/替换
返回所查找字符
[In ]:Series.str.findall("b") #返回所有的要查找的字符;re.findall()
[Out]:
0 []
1 [b]
2 [b]
3 [b]
4 [b, b]
5 []
dtype: object
返回附一个匹配的查找字符
[In ]:Series.str.extract("(b*)",expand=True) #返回第一个匹配到的目标,正则
[Out]:
0
0
1
2
3 b
4 bb
5
[In ]:Series.str.extractall("(b*)")
[Out]:
0
match
0 0 NaN
1 NaN
1 0 NaN
1 b
2 NaN
2 0 NaN
1 b
2 NaN
3 NaN
3 0 b
1 NaN
2 NaN
4 0 bb
1 NaN
5 0 NaN
1 NaN
根据索引截取字符串
[In ]:Series.str.slice(0,1) #根据索引截取字符串
[Out]:
0 a
1 a
2 a
3 b
4 b
5 c
dtype: object
根据索引替换字符串
[In ]:Series.str.slice_replace(0,1,"x") #替换指定索引字符串
[Out]:
0 x
1 xb
2 xbc
3 xc
4 xb
5 x
dtype: object
替换传入字符
[In ]:Series.str.replace("a","x") #替换; str.replace(); re.sub()
[Out]:
0 x
1 xb
2 xbc
3 bc
4 bb
5 c
dtype: object
字典转换
[In ]:tb = str.maketrans("abc", "123") #翻译;str.translate()
Series.str.translate(tb)
[Out]:
0 1
1 12
2 123
3 23
4 22
5 3
dtype: object
其他
[In ]:Series.str.encode("utf-8").str.decode("GBK") #bytes.decode();str.encode()
[Out]:
0 a
1 ab
2 abc
3 bc
4 bb
5 c
dtype: object
[In]:Series.str.len() #查看每个字符串的长度
[Out]:
0 1
1 2
2 3
3 2
4 2
5 1
dtype: int64
[In]:Series.str.normalize("NFC") #unicodedata.normalize()
[Out]:
0 a
1 ab
2 abc
3 bc
4 bb
5 c
dtype: object
[In]:Series.str.isalnum() #是否是字母和数字;str.isalnum()
[Out]:
0 True
1 True
2 True
3 True
4 True
5 True
dtype: bool
[In]:Series.str.isalpha() #是否是字母;str.isalpha()
[Out]:
0 True
1 True
2 True
3 True
4 True
5 True
dtype: bool
[In]:Series.str.isdigit() #是否是数字;str.isdigit()
[Out]:
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
[In]:Series.str.isspace() #是否是空白;str.isspace()
[Out]:
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
[In]:Series.str.isnumeric() #是否是数字;str.isnumeric()
[Out]:
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
[In]:Series.str.isdecimal() #是否是小数;str.isdecimal()
[Out]:
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
[In]:Series.str.get_dummies(sep=',') #矩阵
[Out]:
a ab abc bb bc c
0 1 0 0 0 0 0
1 0 1 0 0 0 0
2 0 0 1 0 0 0
3 0 0 0 0 1 0
4 0 0 0 1 0 0
5 0 0 0 0 0 1