Excel中如何计算字符串的长度(excel求字符串长度)
728
2022-05-30
Pandas字符串处理
Series.str字符串方法列表参考文档
文章目录
Pandas字符串处理
读取数据
获取Series的str属性,使用各种字符串处理函数
使用str的startswith、contains等得到bool的Series可以做条件查询
需要多次str处理的链式操作
使用正则表达式的处理
Pandas的字符串处理:
使用方法:先获取Series的str属性,然后在属性上调用函数;
只能在字符串列上使用,不能数字列上使用;
Dataframe上没有str属性和处理方法
Series.str并不是Python原生字符串,而是自己的一套方法,不过大部分和原生str很相似;
本节演示内容:
获取Series的str属性,然后使用各种字符串处理函数
使用str的startswith、contains等bool类Series可以做条件查询
需要多次str处理的链式操作
使用正则表达式的处理
读取数据
import pandas as pd
1
df = pd.read_csv("data.xlsx") df.head()
1
2
3
df.dtypes
1
ymd object bWendu object yWendu object tianqi object fengxiang object fengli object aqi int64 aqiInfo object aqiLevel int64 dtype: object
1
2
3
4
5
6
7
8
9
10
获取Series的str属性,使用各种字符串处理函数
df["bWendu"].str
1
1
# 字符串替换函数 df["bWendu"].str.replace("℃", "")
1
2
0 3 1 2 2 2 3 0 4 3 .. 360 -5 361 -3 362 -3 363 -2 364 -2 Name: bWendu, Length: 365, dtype: object
1
2
3
4
5
6
7
8
9
10
11
12
# 判断是不是数字 df["bWendu"].str.isnumeric()
1
2
0 False 1 False 2 False 3 False 4 False ... 360 False 361 False 362 False 363 False 364 False Name: bWendu, Length: 365, dtype: bool
1
2
3
4
5
6
7
8
9
10
11
12
df["aqi"].str.len()
1
使用str的startswith、contains等得到bool的Series可以做条件查询
condition = df["ymd"].str.startswith("2018-03")
1
condition
1
0 False 1 False 2 False 3 False 4 False ... 360 False 361 False 362 False 363 False 364 False Name: ymd, Length: 365, dtype: bool
1
2
3
4
5
6
7
8
9
10
11
12
df[condition].head()
1
需要多次str处理的链式操作
怎样提取201803这样的数字月份?
1、先将日期2018-03-31替换成20180331的形式
2、提取月份字符串201803
df["ymd"].str.replace("-", "")
1
0 20180101 1 20180102 2 20180103 3 20180104 4 20180105 ... 360 20181227 361 20181228 362 20181229 363 20181230 364 20181231 Name: ymd, Length: 365, dtype: object
1
2
3
4
5
6
7
8
9
10
11
12
# 每次调用函数,都返回一个新Series df["ymd"].str.replace("-", "").slice(0, 6)
1
2
使用正则表达式的处理
# 添加新列 def get_nianyueri(x): year,month,day = x["ymd"].split("-") return f"{year}年{month}月{day}日" df["中文日期"] = df.apply(get_nianyueri, axis=1)
1
2
3
4
5
df["中文日期"]
1
0 2018年01月01日 1 2018年01月02日 2 2018年01月03日 3 2018年01月04日 4 2018年01月05日 ... 360 2018年12月27日 361 2018年12月28日 362 2018年12月29日 363 2018年12月30日 364 2018年12月31日 Name: 中文日期, Length: 365, dtype: object
1
2
3
4
5
6
7
8
9
10
11
12
问题:怎样将“2018年12月31日”中的年、月、日三个中文字符去除?
# 方法1:链式replace df["中文日期"].str.replace("年", "").str.replace("月","").str.replace("日", "")
1
2
0 20180101 1 20180102 2 20180103 3 20180104 4 20180105 ... 360 20181227 361 20181228 362 20181229 363 20181230 364 20181231 Name: 中文日期, Length: 365, dtype: object
1
2
3
4
5
6
7
8
9
10
11
12
Series.str默认就开启了正则表达式模式
# 方法2:正则表达式替换 df["中文日期"].str.replace("[年月日]", "")
1
2
0 20180101 1 20180102 2 20180103 3 20180104 4 20180105 ... 360 20181227 361 20181228 362 20181229 363 20181230 364 20181231 Name: 中文日期, Length: 365, dtype: object
1
2
3
4
5
6
7
8
9
10
11
12
正则表达式
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。