'''Pandas的字符串处理:
1.使用方法:先获取Series的str属性,然后在属性上调用函数;
# 例子:df.loc[:,'bWendu'] = df['bWendu'].str.replace('℃','').astype('int32')
2.只能在字符串列上使用,不能数字列上使用;
3.Dataframe上没有str属性和处理方法,只能在Series使用
4.Series.str并不是Python原生字符串,而是自己的一套方法,不过大部分和原生str很相似。
Series.str字符串方法列表参考文档:
https://pandas.pydata.orglpandas-docs/stable/reference/series.htmI#string-handling'''
import pandas as pd
df = pd.read_csv("D:\\python39\\pandas\\antlearnpandasmaster\\datas\\beijing_tianqi\\beijing_tianqi_2018.CSV")
##1.获取Series的str属性,使用各种字符串处理函数
ser = df['bWendu'].str.replace('℃','')
ser = df['bWendu'].str.isnumeric()
#ser = df['aqi'].str.len()#报错
##2.使用str的startswith、contains等得到的bool的Series可以做条件查询,其中startswith、contains用法和结果相同
ser =df.loc[df['ymd'].str.startswith('2018-02'),:]
ser =df.loc[df['ymd'].str.contains('2018-02'),:]
##3.多次str处理的链式操作
##怎样提取201803这样的数字月份?
##3.1 先将日期2018-03-31替换成20180331的形式
ser = df['ymd'].str.replace('-','')
##3.2 提取月份字符串201803
ser = df['ymd'].str.replace('-','').str.slice(0,6)#由于str是Series上的属性,不能直接使用.slice()函数
ser = df['ymd'].str.replace('-','').str[0:6]#同上
##4.正则表达式的处理
def get_nianyueri(x):
year,month,day = x['ymd'].split('-')
return f"{year}年{month}月{day}日"
df['中文日期'] = df.apply(get_nianyueri,axis=1)
#print(df['中文日期'])
#问题:怎样将“2018年12月31日"中的年、月、日三个中文字符去除?
#df['中文日期'].str.replace('年','').str.replace('月','').str.replace('日',"")
z=df['中文日期'].str.replace('[年月日]','')
print(z)
Pandas 字符串处理
最新推荐文章于 2024-02-21 13:44:39 发布