series.str.lower().str.title()
转为小写字母:Series.str.lower()
转为大写字母:Series.str.upper()
转为标题:Series.str.title()
将每个单词的首字母转为大写
首字母大写:Series.str.ccapitalize()
大小写互换:Series.str.swapcase()
转为小写字母(支持其他语言):Series.str.casefold()
Series.str.center(10,fillchar='一') #居中对齐,宽度为10,用“一”填充
Series.str.ljust(10,fillchar='一') #左对齐
Series.str.rjust(10,fillchar='一') #右对齐
Series.str.ljust(width=10,size='left',fillchar='一') #指定宽度,填充内容对齐方式,填充内容
Series.str.zfill(3) # 填充对齐,不足3位的前面加0
Series.str.split() #
Series.str.split('-').get(1) / Series.str.split('-').str[1] # 读取切分后的字符
Series.str.split('-',expand=True) # 将返回的列表展开
Series.str.split('-',expand=True,n=1) # 限制切分次数
Series.str.rplit('-',expand=True,n=1) # 从字符串尾部向首部切分
Series.str.slice(1) #切掉第一个字符,留下剩余字符
Series.str.slice(stop=2) # 切掉索引为1之后的元素
Series.str.slice(start=0,stop=5,step=3)
Series.str.partition() # 从右开始划分三部分,默认分隔符为空格,expand默认True
Series.str.partition('-')
Series.str.partition('-',expand=False) # 将划分的结果转为一个元组列的Series
字符替换有以下几种方法:
Series.str.replace(pat, repl, n= -1, case= None, flags= 0, regex= None)
# pat:匹配模式,可以是正则表达式也可以是re.compile()
# repl:新字符,可以是可迭代数据类型也可以是函数,
# n:替换次数,默认-1,替换全部
# case:确定替换是否区分大小写
# flags:正则表达式模块标志
# regex:确定是否假设passed-in模式是正则表达式
s=pd.Series(['abc123','fknf','hello world','12'])
s=s.str.replace('[a-z]+','0',regex=True)
def repl(a):
print(a)
return a.group(0)[::-1]
def repl1(a):
print(a)
return a.group("two").swapcase()
print(pd.Series(["English", "chi 11 baz", 'poi'], dtype="string").str.replace(r"(?P\w+) (?P\w+) (?P\w+)" , repl1, regex=True))
print(pd.Series(["190 ole", "olu", 'cba'], dtype="string").str.replace(r"[a-z]+", repl, regex=True))
Series.str.slice_replace(start=None, stop=None, repl=None) # 替换为其他字符串
# start:替换次数
# stop:确定替换是否区分大小写
# repl:确定是否假设passed-in模式是正则表达式
Series.str.cat(others=None, sep=None, na_rep=None, join='left')
others:需要拼接的数据,该数据的长度必须跟Series对象相同
sep :拼接用的分隔符
join :连接方式,值的范围 {‘left’, ‘right’, ‘outer’, ‘inner’}
例子:
pd.Series(['a', 'b', np.nan, 'd']).str.cat(sep=' ', na_rep='?')
'a b ? d' # 结果
pd.Series(['a', 'b', np.nan, 'd']).str.cat(['A', 'B', 'C', 'D'], sep=',').str.cat(['1', '2', '3', '4'], sep='-')
0 a,A-1 #结果
1 b,B-2
2 NaN
3 d,D-4
Series.str.extract(pat, flags= 0, expand= True)
pat:正则表达式
flags:正则库re中的标识,re.IGNORECASE
expand:是否展开内容返回DataFrame
Series.str.find(sub,start,end)
sub:要查找字符
pandas.Series(['fsfg','safas']).str.find('sa')
0 -1
1 0
pandas.Series(['fsfg','safas']).str.find('sa',2)
0 -1
1 -1
pandas.Series(['[email protected]','[email protected]','[email protected]']).str.findall('(.*?)@(.*).com')
Series.str.findall(pat, flags= 0, expand= True)
pat:正则表达式
flags:正则库re中的标识,re.IGNORECASE
expand:是否展开内容返回DataFrame
pd.Index(['Mouse', 'dog', 'house and parrot', '23.0', np.NaN]).str.contains('house|dog', regex=True)
0 False
1 True
2 True
3 False
4 NaN
pd.Index(['Mouse', 'dog', 'house and parrot', '23.0', np.NaN]).str.contains('\\d', regex=True)
0 False
1 False
2 False
3 True
pandas.Series(['[email protected]','[email protected]','[email protected]']).str.findall('(.*?)@(.*).com')
# 0 [(1234, qq)]
# 1 [(python, 163)]
# 2 [(java, java)]
Series.str.contains(pat, case=True, flags=0, na=None, regex=True)
pat: 匹配字符串或正则表达式
case: 是否区分大小写
flags: 正则库re中的标识,re.IGNORECASE
na: 对缺失值填充
regex: 是否支持正则
Series.str.count('a') / Series.str.count(r'a|b|c')
Series.str.len()
Series.str.isalpha() # 所有字符是否都是字母
Series.str.isnumeric() #检测字符串是否由数字组成
Series.str.isalnum() # 所有是否字母或数字组成
Series.str.isdigit() # 所有是否为数字
Series.str.isdecimal() # 检查字符串中是否只含有十进制字符
Series.str.isspace() # 所有是否空格
Series.str.islower() # 所有是否小写
Series.str.isupper() # 所有是否大写
Series.str.istitle() # 所有是否标题格式