Pandas Timedelta

1.Timedelta基本概念

首先导入pandas库

import pandas as pd;
 
  • 1

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

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

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

代码结果:

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

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


如果只写年默认1月1日

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

代码结果:

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

只写年月默认1日

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

代码结果:

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

可以看到结果是一样的

Timedelta参数

通过字符串传递参数

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

代码结果:

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

通过整数传递参数

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

代码结果:

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

通过数据偏移

pd.Timedelta(days=2)
  • 1

代码结果:

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

以上方法可根据喜好使用

2.Timedelta简单利用

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

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

代码结果:

26.29041095890411
  • 1

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


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

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

代码结果:

26.29180006733137
  • 1

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

原文地址:https://www.cnblogs.com/cxxBoo/p/13884575.html