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

文章介绍了Pandas库中Timedelta类型的使用,包括通过字符串、整数和数据偏移创建Timedelta对象。接着,展示了如何利用Timedelta计算年龄,分别得到实岁和虚岁。最后,讨论了在数据筛选中的应用,如何筛选出发货日期在当前日期30天内的记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200324110042566.pn

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

在这里插入图片描述

可以看到目前发货日期列是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模块,本质上是一样操作的
结果:

在这里插入图片描述 
————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值