您的位置:

Pandas时间差timedelta详解

一、什么是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来计算时间差、增加或减少日期等操作。