📜  使用 Pandas 对 TimeDelta 对象进行加法和减法 - Python(1)

📅  最后修改于: 2023-12-03 14:49:44.577000             🧑  作者: Mango

使用 Pandas 对 TimeDelta 对象进行加法和减法 - Python

在 Python 中,Pandas 包提供了一种处理日期和时间的方便方法。其中一个功能是 TimeDelta 对象,可以用于在时间上进行加法和减法。

创建 TimeDelta 对象

在 Pandas 中,可以使用 pd.Timedelta() 函数来创建 TimeDelta 对象,该函数将时间间隔(以秒为单位)作为参数。

import pandas as pd

td = pd.Timedelta(weeks=2, days=5, hours=10, minutes=20, seconds=30)
print(td)

输出:

17 days 10:20:30

上述示例中,我们创建一个 TimeDelta 对象表示 2 周 5 天 10 小时 20 分钟 30 秒的时间间隔。创建后,可以通过 print() 函数打印 TimeDelta 对象。

加法和减法

可以通过将 TimeDelta 对象与日期时间对象(如 Timestamp 和 DatetimeIndex)相加或相减来将其应用于时间上。

添加到 Timestamp 对象

可以使用 pd.Timestamp() 函数创建 Timestamp 对象,然后将 TimeDelta 对象添加到它上面。

import pandas as pd

td = pd.Timedelta(weeks=2, days=5, hours=10, minutes=20, seconds=30)

ts1 = pd.Timestamp('2022-01-01 12:00:00')
ts2 = ts1 + td

print(ts2)

输出:

2022-01-19 22:20:30

上述示例中,我们创建了一个 Timestamp 对象 ts1,该对象表示 2022 年 1 月 1 日 12 点整。我们将 TimeDelta 对象 td 添加到 ts1 上,得到了一个新的时间戳对象 ts2,表示在 ts1 时间上增加了时间间隔。

从 Timestamp 对象中减去

同样地,可以将一个 TimeDelta 对象从一个 Timestamp 对象中减去。

import pandas as pd

td = pd.Timedelta(weeks=2, days=5, hours=10, minutes=20, seconds=30)

ts1 = pd.Timestamp('2022-01-19 22:20:30')
ts2 = ts1 - td

print(ts2)

输出:

2022-01-01 12:00:00

上述示例中,我们创建了一个 Timestamp 对象 ts1,该对象表示 2022 年 1 月 19 日 22:20:30。我们从 ts1 中减去 TimeDelta 对象 td,得到了一个新的 Timestamp 对象 ts2,表示在 ts1 时间上减去了时间间隔。

添加到 DatetimeIndex 对象

还可以将 TimeDelta 对象添加到 DatetimeIndex 对象。DatetimeIndex 对象是一种 Pandas 数据类型,用于处理带有日期和时间的数据。

import pandas as pd

dates = pd.date_range('20220101', periods=5)
td = pd.Timedelta(weeks=2, days=5, hours=10, minutes=20, seconds=30)

dti1 = pd.DatetimeIndex(dates)
dti2 = dti1 + td

print(dti2)

输出:

DatetimeIndex(['2022-01-19 10:20:30', '2022-01-20 10:20:30',
               '2022-01-21 10:20:30', '2022-01-22 10:20:30',
               '2022-01-23 10:20:30'],
              dtype='datetime64[ns]', freq=None)

上述示例中,我们创建了一个 DatetimeIndex 对象 dti1,其中包含 5 个日期。我们将 TimeDelta 对象 td 添加到 dti1 中,得到了一个新的 DatetimeIndex 对象 dti2,该对象在每个日期上都增加了时间间隔。

从 DatetimeIndex 对象中减去

同样地,可以从一个 DatetimeIndex 对象中减去一个 TimeDelta 对象。

import pandas as pd

dates = pd.date_range('20220119', periods=5)
td = pd.Timedelta(weeks=2, days=5, hours=10, minutes=20, seconds=30)

dti1 = pd.DatetimeIndex(dates)
dti2 = dti1 - td

print(dti2)

输出:

DatetimeIndex(['2022-01-01 13:39:30', '2022-01-02 13:39:30',
               '2022-01-03 13:39:30', '2022-01-04 13:39:30',
               '2022-01-05 13:39:30'],
              dtype='datetime64[ns]', freq=None)

上述示例中,我们创建了一个 DatetimeIndex 对象 dti1,其中包含 5 个日期。我们从 dti1 中减去 TimeDelta 对象 td,得到了一个新的 DatetimeIndex 对象 dti2,该对象在每个日期上都减少了时间间隔。