在pandas里pd.Timedelta的使用方法

  • 1.Timedelta基本概念
  • Timedelta参数
    • 通过字符串传递参数
    • 通过整数传递参数
    • 通过数据偏移
  • 2.Timedelta简单利用
    • 计算生日为1993年5月27日的人今年的年龄
    • 优化计算虚岁和实岁
    • 实岁
    • 虚岁
  • 3.利用Timedelta筛选数据

1.Timedelta基本概念

首先导入pandas库

import pandas as pd;

Timedelta在pandas中是一个表示两个datetime值之间的差(如日,秒和微妙)的类型,2个Datetime数据运算相减得出的结果就是一个Timedelta数据类型

Datetime只支持+操作,其余运算符操作不会报错

pd.to_datetime('2019-9-4') - pd.to_datetime('2018-1-1')

代码结果:

Timedelta('611 days 00:00:00')

可以看到,结果是一个Timedelta类型,并且算出了2019年9月4日到2018年1月日共有多少天


如果只写年默认1月1日

pd.to_datetime('2019-9-4') - pd.to_datetime('2018')

代码结果:

Timedelta('611 days 00:00:00')

只写年月默认1日

pd.to_datetime('2019-9-4') - pd.to_datetime('2018-1')

代码结果:

Timedelta('611 days 00:00:00')

可以看到结果是一样的

Timedelta参数

通过字符串传递参数

pd.Timedelta('3 days 3 hours 3 minutes 30 seconds')

代码结果:

Timedelta('3 days 03:03:30')

通过整数传递参数

pd.Timedelta(5,unit='d')

代码结果:

Timedelta('5 days 00:00:00')

通过数据偏移

pd.Timedelta(days=2)

代码结果:

Timedelta('2 days 00:00:00')

以上方法可根据喜好使用

2.Timedelta简单利用

计算生日为1993年5月27日的人今年的年龄

age = (pd.to_datetime('2019-9-4') - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365)
print(age)

代码结果:

26.29041095890411

计算生日为1993年5月27日的人今年的年龄


当然也可以用pd.datetime.now()获取当前时间

age = (pd.datetime.now() - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365)
print(age)

代码结果:

26.29180006733137

可以看到结果有所不同,那是因为datetime默认从毫秒开始,所以时间一直在变化
我们可以简单优化处理一下


优化计算虚岁和实岁

实岁

age = (pd.datetime.now() - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365)
age = int(age)
print('实岁是{}岁'.format(age))

代码结果:

实岁是26岁

虚岁

age = (pd.datetime.now() - pd.to_datetime('1993-5-27')) / pd.Timedelta(days=365)
age = int(age) + 1
print('虚岁是{}岁'.format(age))

3.利用Timedelta筛选数据

在实际工作中
我们经常会碰到对于时间的筛选
比如到货日期、注册日期等
pandas里可以利用Timedelta对日期进行一些筛选处理

实际中大多时间数据都以字符串类型存储

  • 首先看一个DataFrame


这样的表格我们日常经常看到
现在我们先看一下发货日期列是什么类型

可以看到目前发货日期列是object
所以我们首先要用pd.to_datetime将这列转为时间类型

df['发货日期'] = pd.to_datetime(df['发货日期'])

我们再来看看

可以看发货日期列已经修改为datetime类型

pandas的to_datetime功能还是比较强大,能够自动识别出日期格式,无论你是YYYY-MM-DD还是YYYY/MM/DD,可以转换很多不同的日期格式

格式修改完毕后我们就可以对它进行操作了

我想要筛选出发货日期距今天30天之内的所有数据(当前日期为2020年3月24日)

df[(pd.datetime.now()- df['发货日期']) < pd.Timedelta(days=30)]

最新的pandas将会要取消内置的datetime,需要外部导入datetime模块,本质上是一样操作的
结果:

感谢你的观看
欢迎讨论和指正!

在pandas里pd.Timedelta的简单介绍及使用方法相关推荐

  1. JSTL 及 tablibs 的简单介绍和配置方法

    JSTL 及 tablibs 的简单介绍和配置方法 jstl 简介 jstl 的全称就是jsp standard tag libraries, 就是jsp里的标准标签库. 引用jstl技术能在jsp种 ...

  2. CSRF简单介绍及利用方法-跨站请求伪造

    0x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP ...

  3. Derby与mysql的关系_Derby数据库简单介绍和使用方法 | 学步园

    一. Derby 数据库介绍 Apache Derby 是100% Java 编写的内存数据库,属于 Apache 的一个开源项目.并且是一个容易管理的关系数据库管理系统,可以和一些商业产品的特性进行 ...

  4. Web前端工作笔记004---js--webSocket简单介绍和使用方法

    JAVA技术交流QQ群:170933152 Websocket 1.websocket是什么? WebSocket是为解决客户端与服务端实时通信而产生的技术.其本质是先通过HTTP/HTTPS协议进行 ...

  5. Derby数据库简单介绍和使用方法

    引言 从软件角度来说,数据库分类为两种: 第一种:数据库服务器(Database Server) 第二种:嵌入式数据库(Embedded Database) 像 Oracle.PostgreSQL.M ...

  6. java数组简单介绍以及其方法

    小谈一下java数组 数组是存放数据的容器,有两个特点:元素类型唯一,长度固定. 一维数组声明:类型[] 数组名;类型 数组名[];推荐用前一种. 多维数组声明同样是以上要求. 在数组创建时,要注意一 ...

  7. 华为VRP系统管理(简单介绍及使用方法)

    vrp--华为数通产品的通用操作系统平台 vrp的发展 vrp1--vrp2--vrp3--vrp5--vrp8 文件系统 系统文件.配置文件.补丁文件.PAF文件 文件后缀       .cc    ...

  8. Flask的简单介绍及使用方法简介

    一.什么是flask? Falsk是由python开发的轻量的web框架,小巧,灵活,一个脚本就可以启动一个web项目, 开发的难度比较大,flask好多的模块是按照django的思路开发的.和fla ...

  9. Java虚拟机内存模型简单介绍

    一.虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的. 不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统 ...

最新文章

  1. CentOS 6.9/7通过yum安装指定版本的JDK/Maven
  2. ajax从页面向action传递json 公司--》
  3. 《大众创业做电商——淘宝与微店 开店 运营 推广 一册通》一一1.3 选择创业的行业...
  4. 【Linux】基础每日一命之cutmvscp命令
  5. JavaBean用JSP调用和使用JSP动作标签的区别
  6. 机器人电量估计方法及实践
  7. XenApp之高可用篇
  8. maya! board_教你玩转MAYA的四十二精华造诣(第二期)
  9. BitLocker解锁之后加锁
  10. OpenMp之sections用法
  11. 企业咨询行业拓客的10个经典方法
  12. java中retry的使用
  13. echarts 桑基图
  14. linux升级n卡驱动,Centos 7 更新 NVIDIA 驱动
  15. 云栖大会 峰会 王德根_2019云栖大会在杭州成功举办
  16. 【SQL自学打卡|DAY11】——苟日新,日日新,又日新
  17. 一个学计算机的打字速度慢,小学初中学生打字速度慢的原因及解决办法
  18. Identifying Singleton Spammers via Spammer Group Detection
  19. jenkins 中无Dingding plugin钉钉插件,及其钉钉发送消息
  20. vue对接汉王ESP1020E签批屏

热门文章

  1. C3P0配置错误导致的连接关闭问题
  2. 8086CPU相关汇编语言的简单概述
  3. 如何用input checkbox实现按钮开关样式?
  4. bootstrap-switch开关按钮表单插件
  5. 隧道变形在线监测过程中应用的光纤应变传感器
  6. 小米10至尊纪念版和华为Mate30pro哪个好
  7. 自动释放池 ARC机制
  8. 通信原理眼图画法_四川大学通信原理眼图实验
  9. MMM金融互助平台崩盘了,你当接盘侠了没?
  10. HTML静态网页作业:使用html+css制作北京黎红学院学校网站 (4个页面)