来自:Python那些事
pandas中accessor功能很强大,可以将它理解为一种属性接口,通过它获得额外的方法。
下面用代码和实例理解一下:
import pandas as pd pd.Series._accessors
对于Series数据结构使用_accessors方法,我们得到3个对象:cat, str, dt。
- .cat:用于分类数据(Categorical data)
- .str:用于字符数据(String Object data)
- .dt:用于时间数据(datetime-like data)
1.str对象的使用
Series数据类型:str字符串
addr = pd.Series([ 'Washington, D.C. 20003', 'Brooklyn, NY 11211-1755', 'Omaha, NE 68154', 'Pittsburgh, PA 15211' ]) print(addr)
addr.str.upper()
addr.str.count(r'd') # d表示匹配任意数字
关于str对象的2个方法说明:
- Series.str.upper: 将Series中所有字符串变为大写;
- Series.str.count: 对Series中所有字符串的个数进行计数;
除了以上用法外,常用的属性和方法还有.rstrip,.contains,split等,我们通过下面代码查看一下str属性的完整列表:
[i for i in dir(pd.Series.str) if not i.startswith('_')]
2.dt对象的使用
Series数据类型:datetime
因为数据需要datetime类型,所以下面使用pandas的date_range()生成了一组日期datetime演示如何进行dt对象操作。
daterng = pd.Series(pd.date_range('2017', periods=9, freq='Q')) print(daterng)
Series.dt.weekday:从日期判断所处星期数;
time_ser = pd.to_datetime(daterng) for i in time_ser: print(i.weekday()) 或 print(daterng[daterng.dt.weekday])
注意:前面是星期数
Series.dt.quarter:从日期判断所处季节;
print(daterng[daterng.dt.quarter > 2])
Series.dt.is_year_end:从日期判断是否处在年底;
print(daterng[daterng.dt.is_year_end])