python pandas时间偏移
0 背景
DateOffset
是 pandas 中用于表示时间偏移量的类,它是基于日历规则的,允许我们对日期进行如“向前移动一个月”、“向后移动两个工作日”等复杂的偏移操作。特别是在处理时间序列数据时,可以帮助我们轻松地对日期进行加减运算。
在时间的偏移上, DateOffset
的作用主要体现在:
-
基于日历的偏移:与 Timedelta
不同,DateOffset
是基于日历的。这意味着它可以处理诸如“月份结束”、“工作日”等复杂的时间偏移,而Timedelta
只能处理绝对时间差。 -
灵活性: DateOffset
提供了多种子类,如BusinessDay
、BusinessHour
、MonthEnd
等,这些子类允许我们根据具体需求进行更灵活的时间偏移。 -
与 DatetimeIndex
和Series
的兼容性:我们可以轻松地将DateOffset
应用于 pandas 的DatetimeIndex
或Series
对象,以便进行时间偏移操作
另外, 它与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