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)
传入可调用对象:
pat=r'[a-z]+'
def repl(m):
return m.group(0)[::-1]
pd.Series(['foo 123', 'bar baz', np.nan]).str.replace(pat, repl)
拼接: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<letter>[a-zA-Z])", expand=False)
捕获多个组:
expand=True,会返回一个数据表,expand=False会抛出ValueError
#s.index.str.extract("(?P<letter>[a-zA-Z])([0-9]+)", expand=True)
# s.index.str.extract("(?P<letter>[a-zA-Z])([0-9]+)", expand=False)
捕获一个组:expand=False
捕获一个组:expand=True
捕获多个组:expand=True
contains:测试匹配或包含模式的字符串
pattern = r'[0-9][a-z]'
pd.Series(['1', '2', '3a', '3b', '03c']).str.contains(pattern)