文章目录
一、Pandas字符串处理
- 一、Pandas字符串处理
- 1.Pandas的字符串处理的基本介绍
- 2.一些常用方法的使用举例
- 3.使用过程中的一些注意
- 二、index索引的特点
- 1.特点
- 2.为什么使用index索引可以提高查询性能呢?
前面我们已经使用了字符串的处理函数:
df["bWendu"].str.replace("℃", "").astype('int32')
1.Pandas的字符串处理的基本介绍
- 使用方法:先获取Series的str属性,然后在属性上调用函数;
- 只能在字符串列上使用,不能数字列上使用;
- Dataframe上没有str属性和处理方法
- Series.str并不是Python原生字符串,而是自己的一套方法,不过大部分和原生str很相似;
①切分字符串,split()
# (1)把DataFrame列中字符串以’,’分隔开,每个元素分开后存入一个列表里
series=data['列名'].str.split(',')
#(2)参数expand,这个参数取True时,会把切割出来的内容当做一列,产生多列。
series=data['列名'].str.split(',',expand=True)
#(3)只要第一列
series=data['列名'].str.split(',',expand=True)[0]
②替换,replace()
# #用‘-’代替‘,’
series=data['列名'].str.replace(',','-')
③是否包含表达式,contains()
#返回的是布尔值。
series=data['列名'].str.contains('we')
④查找所有符合正则表达式的字符findall()
# 以数组的形式返回。
series=data['列名'].str.findall("[a-z]")
⑤计算字符串的长度,len()
series=data['列名'].str.len()
⑥去除前后的空白字符,strip()
series=data['列名'].str.strip()
series=data['列名'].str.rstrip() #去除后面的空白字符
series=data['列名'].str.lstrip() #去除前面的空白字符
⑦其他的一些判断方法
isalnum() # 是否全部是数字和字母组成
isalpha() # 是否全部是字母
isdigit() # 是否全部都是数字
isspace() # 是否空格
islower() # 是否全部小写
isupper() # 是否全部大写
istitle() # 是否只有首字母为大写,其他字母为小写
3.使用过程中的一些注意
- 链式使用:当执行完一次str的方法后,一般不可以继续使用str的方法,需要再次使用str的属性,再使用str的方法
- Series.str默认就开启了正则表达式模式
# 正则表达式替换,从2015年12月10如中将年月日替换为20151210
df["中文日期"].str.replace("[年月日]", "")
二、index索引的特点
1.特点
- 更方便的数据查询,使用index查询的时候可以获得性能提升;
- 自动的数据对齐功能;
- 更多更强大的数据结构支持;
如果index是唯一的,Pandas会使用哈希表优化,查询性能为O(1); 如果index不是唯一的,但是有序,Pandas会使用二分查找算法,查询性能为O(logN); 如果index是完全随机的,那么每次查询都要扫描全表,查询性能为O(N);
所以我们再对于完全随机索引的查询情况,如果提前排序,可以提高查询速率