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默认从毫秒开始,所以时间一直在变化
我们可以简单优化处理一下