Python Pandas 时间日期处理进阶:比较、过滤与运算
本文介绍 Python Pandas 中时间日期的进阶处理方法,涵盖日期格式转换、基于时间的数据过滤与提取、星期几的判断(含名称与数字量化)、日期加减运算以及判断月末、月初和闰年等常用技巧。
在上一篇关于时间日期处理的入门文章中,我们简要介绍了 Pandas 中时间日期的基本操作。本文将在此基础上,补充一些常用的进阶处理方法。
时间日期的比较与过滤
时间日期的比较
假设我们有一个数据集 df,其结构如下所示。

在进行时间日期的比较之前,必须先对数据进行格式转换。
转换格式时,使用以下方法:
import pandas as pd
pd.to_datetime()
我们需要先将 df 数据集中的 date 列转换为时间格式。
df['date']=pd.to_datetime(df['date'])
转换完成后,可以输出数据集的数据类型以进行检查。
print df.info()

如红框所示,date 列的数据类型已转换为 datetime64[ns],此时即可对日期进行大小判断。
1. 过滤某个时间片的数据 & 取某个时间片的数据
假设我们需要从数据集 df 中剔除 6 月 10 日之后的样本。
df[df['date']<=pd.datetime(2016,6,10)]

当然,如果我们需要提取某个特定时间片的数据,只需使用等号即可。
判断日期与星期几
2. 判断某个日期是周几
假如在数据集 df 中,我们需要为日期添加“今天是周几”的信息,可以这样做:
pd.to_datetime(df['date']).dt.weekday_name

有时候,我们只需要一个数字来量化周几,只需稍作修改:
代码如下:
pd.to_datetime(df['date']).dt.weekday
日期的加减运算
3. 对日期做加减法。
有时,我们需要对日期进行年、月、日等时间维度的增减。此时,可以按以下方式操作:
首先,我们需要导入一个新的库。
import dateutil
1. 对日期进行增减
假如我们需要对 2016 年 3 月 1 日增加一天。
pd.datetime(2016,3,1)+dateutil.relativedelta.relativedelta(days=1)
如果需要将日期减少一天,只需将 + 号改为 - 号即可。
如果需要对年、月,甚至时、分、秒进行增减,变量名分别如下:
years
months
days
hours
minutes
seconds
判断月末、月初与闰年
2. 判断增减后的日期是否为当月最后一天 & 开始的一天
pd.to_datetime(pd.datetime(2016,3,1)+dateutil.relativedelta.relativedelta(day=1)).is_month_start

判断是否为最后一天,将 start 改为 end 即可。

4. 判断是否为闰年
pd.to_datetime(pd.datetime(2016,1,1).is_leap_year

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









