一、什么是Pandas时间差timedelta?
在Pandas中,timedelta是指两个时间值之间的差值。
一般情况下,Pandas自动推断时间差单位,可以是天、小时、分钟、秒、毫秒、微秒、纳秒。
timedelta是由两个datetime之间的差来表示的,datetime可以是Series或DataFrame中的一组值。
二、Pandas时间差的创建
可以通过直接进行时间差运算创建时间差对象:
import pandas as pd from datetime import datetime t1 = datetime(2021, 6, 10) t2 = datetime(2021, 6, 12) delta = t2 - t1 print(delta)
输出结果为:
2 days, 0:00:00
也可以使用Pandas的Timedelta函数来创建时间差对象:
import pandas as pd delta = pd.Timedelta('2 days 12 hours 5 minutes 10 seconds') print(delta)
输出结果为:
2 days 12:05:10
三、Pandas时间差的运算
Pandas时间差支持加、减、乘、除等运算符的操作。
在Series或DataFrame上进行时间差的运算,会自动对每个元素进行运算:
import pandas as pd data = pd.DataFrame({'date1': pd.date_range('2022-01-01', periods=3), 'date2': pd.date_range('2022-01-04', periods=3)}) data['timedelta'] = data['date1'] - data['date2'] print(data)
输出结果为:
date1 date2 timedelta
0 2022-01-01 2022-01-04 -3 days
1 2022-01-02 2022-01-05 -3 days
2 2022-01-03 2022-01-06 -3 days
也可以对时间差对象进行加、减、乘、除的运算:
import pandas as pd delta1 = pd.Timedelta('2 days 12 hours 5 minutes 10 seconds') delta2 = pd.Timedelta('1 day 10 hours') print(delta1 + delta2) # 加法运算 print(delta1 - delta2) # 减法运算 print(delta1 * 2) # 乘法运算 print(delta1 / 2) # 除法运算
输出结果为:
3 days 22:05:10
1 days 2:05:10
5 days 0:10:20
1 days 6:02:35
四、Pandas时间差的属性和方法
Pandas时间差对象有许多有用的属性和方法。
1)属性:
- days: 返回时间差中天的数量。
- seconds: 返回时间差中秒的数量(去除天后的秒数)。
- microseconds: 返回时间差中微秒的数量(去除天和秒后的微秒数)。
- nanoseconds: 返回时间差中纳秒的数量(去除天、秒和微秒后的纳秒数)。
2)方法:
- floor(单位): 对时间差对象的各个时间数值向下取整。
- ceil(单位): 对时间差对象的各个时间数值向上取整。
- round(单位): 对时间差对象的各个时间数值四舍五入取整。
以seconds为例:
import pandas as pd delta = pd.Timedelta('2 days 12 hours 5 minutes 10 seconds') print(delta.seconds) # 返回除天数外的秒数 print(delta.floor('hours')) # hours向下取整,返回2 days 12:00:00 print(delta.ceil('days')) # days向上取整,返回3 days print(delta.round('minutes')) # minutes四舍五入,返回2 days 12:05:00
输出结果为:
43510
2 days 12:00:00
3 days
2 days 12:05:00
总结
Pandas的timedelta可以方便地对时间差进行运算和转换,对于时间序列数据的分析和处理非常有用。
在实际的工作中,我们可以利用timedelta来计算时间差、增加或减少日期等操作。