📅  最后修改于: 2023-12-03 14:49:44.577000             🧑  作者: Mango
在 Python 中,Pandas 包提供了一种处理日期和时间的方便方法。其中一个功能是 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)相加或相减来将其应用于时间上。
可以使用 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
时间上增加了时间间隔。
同样地,可以将一个 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
时间上减去了时间间隔。
还可以将 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 对象中减去一个 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
,该对象在每个日期上都减少了时间间隔。