python pandas时间偏移

python pandas时间偏移

0 背景

python pandas时间偏移

DateOffset 是 pandas 中用于表示时间偏移量的类,它是基于日历规则的,允许我们对日期进行如“向前移动一个月”、“向后移动两个工作日”等复杂的偏移操作。特别是在处理时间序列数据时,可以帮助我们轻松地对日期进行加减运算。

在时间的偏移上, DateOffset 的作用主要体现在:

  1. 基于日历的偏移:与 Timedelta 不同,DateOffset 是基于日历的。这意味着它可以处理诸如“月份结束”、“工作日”等复杂的时间偏移,而 Timedelta 只能处理绝对时间差。
  2. 灵活性DateOffset 提供了多种子类,如 BusinessDayBusinessHourMonthEnd 等,这些子类允许我们根据具体需求进行更灵活的时间偏移。
  3. DatetimeIndexSeries 的兼容性:我们可以轻松地将 DateOffset 应用于 pandas 的 DatetimeIndexSeries 对象,以便进行时间偏移操作

另外, 它与pd.Timedelta() 对象类似, 但是也有一些区别, 区别主要在于:

  • 基于日历与绝对时间的区别:如前所述,DateOffset 是基于日历的偏移,而 Timedelta 是基于绝对时间的偏移。这意味着,无论一天是23小时、24小时还是25小时(考虑夏令时等因素),Timedelta 增减1天都只计算24小时。而 DateOffset 则会与当天相同的时间保持一致。
  • 使用场景的区别Timedelta 更适用于需要精确到秒甚至毫秒级的时间差计算,而 DateOffset 更适用于基于日历规则的偏移计算,如处理工作日、月份结束等复杂情况。
  • 灵活性的区别:虽然 Timedelta 提供了加减天数、小时数等灵活操作,但在处理复杂的时间偏移时,如跳过周末或只计算工作日等,DateOffset 提供了更多的选项和自定义能力。而 Timedelta 则相对简单直接。

1 使用

导入模块

import pandas as pd
import numpy as np

创建时间

t = pd.Timestamp('2024-03-29 00:00:00')
# 2024-03-29, 农历二月十五, 周五
Timestamp('2024-03-29 00:00:00')

时间偏移操作

增加1天

t + pd.Timedelta(days=1)
Timestamp('2024-03-30 00:00:00')
t + pd.DateOffset(days=1)
Timestamp('2024-03-30 00:00:00')

增加3个工作日

three_bdays = pd.offsets.BDay() * 3
t + three_bdays
Timestamp('2024-04-03 00:00:00')

增加3个月

t + pd.DateOffset(months=3)
Timestamp('2024-06-29 00:00:00')
pd.Timestamp('2024-01-31 00:00:00') + pd.DateOffset(months=1)
Timestamp('2024-02-29 00:00:00')

增加1个小时

t + pd.DateOffset(hours=1)
Timestamp('2024-03-29 01:00:00')

增加1天, pd.DateOffset()默认是1个日历日

t + pd.DateOffset()
Timestamp('2024-03-30 00:00:00')

2 其他

在实际的场景中, 由于很多时候实际日期的需要, 比如工作日, 月底, 年底等一些相对的日期处理, pd.Timedelta() 有时难以符合我们的需求, 因此, 对于复杂的日期进行向前或者向后偏移时, DateOffset对象可以帮助我们解决一些复杂的日期偏移场景.

如果我们觉得这期内容不错的话, 欢迎点赞, 在看, 关注我的微信公众号


原文始发于微信公众号(其之):python pandas时间偏移

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/257145.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!