Datawhale - Pandas(下)--task02 文本数据

一,先有个整体的概念:

  这一章是关于文本数据,以前在EXCEL里,文本类型就是string字符串,所以这里也先介绍下string,因为和object很像,也很容易出错,所以对比着介绍的;接下来是string的一系列操作:拆分和拼接(以前只知道拼接是“+”);string的替换;子串匹配和提取。

二、string类型

1、string 和 object的区别

① 字符存取方法(string accessor methods,如str.count)会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型

② 某些Series方法不能在string上使用,例如: Series.str.decode(),因为存储的是字符串而不是字节

③ string类型在缺失值存储或运算时,类型会广播为pd.NA,而不是浮点型np.nan

 2、string的转换,需要先别的类型转为str 型 object, 再转为string 类型。

三、拆分和拼接

1、str.split 方法

s = pd.Series(['a_b_c', 'c_d_e', np.nan, 'f_g_h'], dtype="string")
s.str.split('_')
0    [a, b, c]
1    [c, d, e]
2         <NA>
3    [f, g, h]

Note:split后的类型是object,因为现在Series中的元素已经不是string,而包含了list,且string类型只能含有字符串;对于str方法可以进行元素的选择,如果该单元格元素是列表,那么str[i]表示取出第i个元素,如果是单个元素,则先把元素转为列表在取出;expand参数控制了是否将列拆开,n参数代表最多分割多少次。

2、str.cat 方法

但是,这里:对于两个Series合并而言,是对应索引的元素进行合并。不太理解。

三、替换

替换不可避免要用正则表达式,简单的会,难得还不会。

广义上的替换,就是指str.replace函数的应用,fillna是针对缺失值的替换。

s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca','', np.nan, 'CABA', 'dog', 'cat'],dtype="string")

 

 

 四、子串匹配与提取

1、str.extract 方法

pd.Series(['10-87', '10-88', '10-89'],dtype="string").str.extract(r'([\d]{2})-([\d]{2})')

 

2、 str.extractall 方法

与extract只匹配第一个符合条件的表达式不同,extractall会找出所有符合条件的字符串,并建立多级索引(即使只找到一个)

3. str.contains和str.match

 五,练习

 

posted @ 2020-06-27 00:05  haiyanli  阅读(89)  评论(0编辑  收藏  举报