文章目录
一、Task02: 文本数据
string与object区别
- 字符存取方法会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型
- 一些Series方法不能在string上使用,如:Series.str.decode(),因为存储的是字符串而不是字节
- string类型在缺失值存储或运算时,类型会广播为pd.NA,而不是浮点型np.nan
二、理解点
- str型object与object
在string类型转化中,如果将一个其他类型的容器直接转换成string类型可能会报错
# int型
pd.Series([1,2]).astype('string') #报错
# bool型
pd.Series([True,False]).astype('string') #报错
# 非str型object
pd.Series([1,'1.']).astype('string') #报错
-
报错原因:
StringArray requires a sequence of strings or pandas.NA
从报错原因来看,转化为而string类型需要str序列
而str型object就是由str类型组成
# object类型
pd.Series(['1', '1'])
pd.Series(['1','1.']).astype('string')
-
str.split后的类型为object,而不是string
因为Series中的元素包含list,而string类型只能含有字符串
s.str.split('_')
此处是str类型object 缺失值因为object会根据缺失类型和数据类型改变。
- str.cat的索引对齐特性
s = pd.Series(['a', 'b', np.nan, 'd'])
t = pd.Series(['d', 'a', 'e', 'c'], index=[3, 0, 4, 2])
s.str.cat(t, join='left', na_rep='-')
0 aa
1 b-
2 -c
3 dd
dtype: object
s.str.cat(t, join='outer', na_rep='-')
0 aa
1 b-
2 -c
3 dd
4 -e
dtype: object
>>>
s.str.cat(t, join='inner', na_rep='-')
0 aa
2 -c
3 dd
dtype: object
>>>
s.str.cat(t, join='right', na_rep='-')
3 dd
0 aa
4 -e
2 -c
dtype: object
注意这里的t序列中的索引顺序为[3, 0, 4, 2]
- 子组
# 两个分组 0为全部分组 1为第一个匹配到的分组 2为第二个匹配到的分组
print(re.search(r'([ABC])(\w+)', 'CABA').group(2))
s.str.replace(r'([ABC])(\w+)',lambda x:x.group(2)[1:]+