Python3 pandas库(25) 时间日期高效操作 .dt.

在上一篇中,总结了一下关于时间日期的简单计算,但是我们发现很多功能都是datetime库提供的,那么pandas有没有提供跟日期时间有关的函数呢?

自然是有的就是.dt。跟.str一样,后面可以加多个函数进行操作。

这里的dt自然代表的是datetime(我猜)。

比如现在有一组数据:

《Python3 pandas库(25) 时间日期高效操作 .dt.》
《Python3 pandas库(25) 时间日期高效操作 .dt.》

由于日期这一列是datetime64格式,当导出到excel或者别的地方的时候,就会出现格式不是我们想要的。

《Python3 pandas库(25) 时间日期高效操作 .dt.》

这种在导出后还要再次调试格式,让我的懒病都发作了。

一、 日期设置格式:dt.strftime()

《Python3 pandas库(25) 时间日期高效操作 .dt.》

注意:经过.dt.strftime()处理后的数据就不再是datetime类型,就算导出到excel也是不能直接被识别为日期的,所以处理时要慎重。

当然,还可以处理成其它格式:

《Python3 pandas库(25) 时间日期高效操作 .dt.》
小写的y,年份就只有两位
《Python3 pandas库(25) 时间日期高效操作 .dt.》
不要中间的‘-’
《Python3 pandas库(25) 时间日期高效操作 .dt.》
中间用斜线
《Python3 pandas库(25) 时间日期高效操作 .dt.》
将年份放后面
《Python3 pandas库(25) 时间日期高效操作 .dt.》
年份也不要了

还有设置格式更简洁的方式:

《Python3 pandas库(25) 时间日期高效操作 .dt.》
dt.date只提取日期部分

只要记住大写Y和小写y的区别,其它的就可以随心所欲了。dt.strftime()与Datetime库里面的格式设置是不一样的,请注意区别。

二、 提取时间日期中的 部分信息:

dt.year能直接提取出年份,而且是整数型。

《Python3 pandas库(25) 时间日期高效操作 .dt.》

其它信息和年份差不多:

《Python3 pandas库(25) 时间日期高效操作 .dt.》
月份
《Python3 pandas库(25) 时间日期高效操作 .dt.》

《Python3 pandas库(25) 时间日期高效操作 .dt.》
小时
《Python3 pandas库(25) 时间日期高效操作 .dt.》
时间
《Python3 pandas库(25) 时间日期高效操作 .dt.》
季度

还可以返回星期几:(星期一是0,星期天是6,跟切片的时候很相似。)

《Python3 pandas库(25) 时间日期高效操作 .dt.》

这就联想到上一篇文章提到的timedelta类型提取日期,那这个dt能不能用在timedelta类型的数据上呢?

《Python3 pandas库(25) 时间日期高效操作 .dt.》

《Python3 pandas库(25) 时间日期高效操作 .dt.》

实现了,而且更方便了,这里的.days很类似datetime库里面的.days。相当于用.dt.days代替了之前的map(lambda x:x.days)。

按照这个逻辑,.dt.total_seconds()也是可以使用的。

《Python3 pandas库(25) 时间日期高效操作 .dt.》
《Python3 pandas库(25) 时间日期高效操作 .dt.》

的确可行。

三、计算天数相关:

这个可以计算日期位于某一年的第几天(正常计数):

《Python3 pandas库(25) 时间日期高效操作 .dt.》

下面这个可以计算这些日期位于一年第几周:

《Python3 pandas库(25) 时间日期高效操作 .dt.》

除了上面这些,还有.dt后面还可以接很多函数,实在太多,就不一一介绍了。

    原文作者:曹骥
    原文地址: https://zhuanlan.zhihu.com/p/31490318
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞