处理文本数据,主要是通过Seris的str访问。遇到NaN时不做任何处理,保留结果为NaN,遇到数字全部处理为NaN。
str是Seris的方法,DataFrame不能直接使用,但是通过索引选择DataFrame中的某一行或者某一列,结果为Seris,然后就可以使用了。
例如定义一个Seris和DataFrame如下
s = pd.Series([\' ab\',1,\' bb \',np.nan,\'bc \']) dic = {\'one\':[0,2,2,4],\'two\':[2,np.nan,4,6],\'three\':[\'a\',\'b\',np.nan,2]} df = pd.DataFrame(dic,index=[\'d\',\'e\',\'f\',\'g\'])
将上述s全部变成大写字母,将df的列名称变成大写。
s = s.str.upper()
df.columns = df.columns.str.upper()
以下都以Seris做示例,这些方法与python字符串的操作类似
print(s.str.lower()) #将s中的各字符串全部变为小写 print(s.str.upper()) #将s中的各字符串全部变为大写 print(s.str.capitalize()) #将s中的各字符串全部变为首字母大写 print(s.str.len()) #求s中各字符串的长度 print(s.str.count(\'b\')) #求s中的各字符串元素包含几个b print(s.str.startswith(\'a\')) #判断s中的字符串元素是否以a开始 print(s.str.endswith(\'a\')) #判断s中的字符串元素是否以a结束 print(s.str.strip()) #去掉s中字符串元素两边的空格 print(s.str.lstrip()) #去掉s中字符串元素左边的空格 print(s.str.rstrip()) #去掉s中字符串元素右边的空格 print(s.str.replace(\'原字符\',\'替换字符\',1)) #将原字符串替换为指定字符串,默认替换所有满足条件的,n表示替换前n个满足条件的
split()和rsplit()
split()表示从左边开始分割,rsplit()表示从右边分割,分割后的结构为一个列表
s = pd.Series([\'a,b,c,d\',np.nan,[\'a..c\'],\'1,2,3\']) print(s.str.split(\',\')) #对Seris中的元素按照,分割,即对\'a,b,c\'、np.nan、[\'a..c\']、\'1,2,3\'按照,分割 print(s.str.split(\',\').str[0]) #获取每个元素分割后的第一个值,分割后的结果也为Seris,也需要通过str来获取每个元素 print(s.str.split(\',\',expand=True,n=1)) #expand为True表示将原列按照分割符拆分为㢵列,n表示拆分次数,默认不拆分,如果拆分默认拆分最多次 # 0 [a, b, c, d] # 1 NaN # 2 NaN # 3 [1, 2, 3] # dtype: object # 0 a # 1 NaN # 2 NaN # 3 1 # dtype: object # 0 1 # 0 a b,c,d # 1 NaN NaN # 2 NaN NaN # 3 1 2,3