目录
1081、pandas.tseries.offsets.DateOffset类
1082、pandas.tseries.offsets.DateOffset.freqstr属性
1083、pandas.tseries.offsets.DateOffset.kwds属性
1084、pandas.tseries.offsets.DateOffset.name属性
1085、pandas.tseries.offsets.DateOffset.normalize属性
一、用法精讲
1081、pandas.tseries.offsets.DateOffset类
1081-1、语法
# 1081、pandas.tseries.offsets.DateOffset类
class pandas.tseries.offsets.DateOffset
Standard kind of date increment used for a date range.
Works exactly like the keyword argument form of relativedelta. Note that the positional argument form of relativedelata is not supported. Use of the keyword n is discouraged– you would be better off specifying n in the keywords you use, but regardless it is there for you. n is needed for DateOffset subclasses.
DateOffset works as follows. Each offset specify a set of dates that conform to the DateOffset. For example, Bday defines this set to be the set of dates that are weekdays (M-F). To test if a date is in the set of a DateOffset dateOffset we can use the is_on_offset method: dateOffset.is_on_offset(date).
If a date is not on a valid date, the rollback and rollforward methods can be used to roll the date to the nearest valid date before/after the date.
DateOffsets can be created to move dates forward a given number of valid dates. For example, Bday(2) can be added to a date to move it two business days forward. If the date does not start on a valid date, first it is moved to a valid date. Thus pseudo code is:
def __add__(date):
date = rollback(date) # does nothing if date is valid
return date + <n number of periods>
When a date offset is created for a negative number of periods, the date is first rolled forward. The pseudo code is:
def __add__(date):
date = rollforward(date) # does nothing if date is valid
return date + <n number of periods>
Zero presents a problem. Should it roll forward or back? We arbitrarily have it rollforward:
date + BDay(0) == BDay.rollforward(date)
Since 0 is a bit weird, we suggest avoiding its use.
Besides, adding a DateOffsets specified by the singular form of the date component can be used to replace certain component of the timestamp.
Parameters:
nint, default 1
The number of time periods the offset represents. If specified without a temporal pattern, defaults to n days.
normalizebool, default False
Whether to round the result of a DateOffset addition down to the previous midnight.
weekdayint {0, 1, …, 6}, default 0
A specific integer for the day of the week.
0 is Monday
1 is Tuesday
2 is Wednesday
3 is Thursday
4 is Friday
5 is Saturday
6 is Sunday
Instead Weekday type from dateutil.relativedelta can be used.
MO is Monday
TU is Tuesday
WE is Wednesday
TH is Thursday
FR is Friday
SA is Saturday
SU is Sunday.
**kwds
Temporal parameter that add to or replace the offset value.
Parameters that add to the offset (like Timedelta):
years
months
weeks
days
hours
minutes
seconds
milliseconds
microseconds
nanoseconds
Parameters that replace the offset value:
year
month
day
weekday
hour
minute
second
microsecond
nanosecond.
1081-2、参数
无
1081-3、功能
可以与pd.Timestamp或pd.DateTimeIndex对象一起使用,以便对日期进行偏移,通过创建一个DateOffset对象并将其添加到现有的日期时间对象,可以实现日期的准确计算。
1081-4、返回值
本身并不直接返回值;相反,当你将其应用于一个日期时间对象时,它返回一个新的日期时间对象。
1081-5、说明
无
1081-6、用法
1081-6-1、数据准备
无
1081-6-2、代码示例
# 1081、pandas.tseries.offsets.DateOffset类
import pandas as pd
# 创建一个时间戳
ts = pd.Timestamp('2024-11-19')
# 创建一个DateOffset对象
offset = pd.DateOffset(days=10)
# 应用偏移
new_ts = ts + offset
print(new_ts)
1081-6-3、结果输出
# 1081、pandas.tseries.offsets.DateOffset类
# 2024-11-29 00:00:00
1082、pandas.tseries.offsets.DateOffset.freqstr属性
1082-1、语法
# 1082、pandas.tseries.offsets.DateOffset.freqstr属性
pandas.tseries.offsets.DateOffset.freqstr
Return a string representing the frequency.
1082-2、参数
无
1082-3、功能
用于指定时间偏移的频率,通过设置这个参数,用户可以更灵活地创建各种类型的时间偏移。例如,可以指定按年、按月、按周、按日等频率进行偏移。
1082-4、返回值
当使用freqstr创建DateOffset对象时,可以导出该偏移对象,之后可以用来对Timestamp或DatetimeIndex进行加减运算,返回值是对应频率的DateOffset实例,它可以应用于时间序列数据,进行时间的增减。
1082-5、说明
无
1082-6、用法
1082-6-1、数据准备
无
1082-6-2、代码示例
# 1082、pandas.tseries.offsets.DateOffset.freqstr属性
import pandas as pd
# 创建一个DateOffset对象,偏移量为2个月
offset = pd.DateOffset(months=2)
# 使用该偏移量加到一个时间戳上
date = pd.Timestamp('2024-11-19')
new_date = date + offset
print(new_date)
1082-6-3、结果输出
# 1082、pandas.tseries.offsets.DateOffset.freqstr属性
# 2025-01-19 00:00:00
1083、pandas.tseries.offsets.DateOffset.kwds属性
1083-1、语法
# 1083、pandas.tseries.offsets.DateOffset.kwds属性
pandas.tseries.offsets.DateOffset.kwds
Return a dict of extra parameters for the offset.
1083-2、参数
无
1083-3、功能
提供创建DateOffset实例时所用的所有关键字参数(即时间偏移量)的字典,该字典包含了与时间偏移相关的具体单位及其对应的值,使得用户可以查看或使用这些已定义的参数。
1083-4、返回值
返回一个字典,其中每个键(字符串)代表时间单位,如'years'、'months'、'days'、'hours'、'minutes'等,对应的值(整数)是针对这些时间单位的偏移量。
1083-5、说明
无
1083-6、用法
1083-6-1、数据准备
无
1083-6-2、代码示例
# 1083、pandas.tseries.offsets.DateOffset.kwds属性
import pandas as pd
# 创建DateOffset对象
offset = pd.DateOffset(years=1, months=2, days=3)
# 获取kwds属性
kwargs = offset.kwds
print(kwargs)
1083-6-3、结果输出
# 1083、pandas.tseries.offsets.DateOffset.kwds属性
# {'days': 3, 'months': 2, 'years': 1}
1084、pandas.tseries.offsets.DateOffset.name属性
1084-1、语法
# 1084、pandas.tseries.offsets.DateOffset.name属性
pandas.tseries.offsets.DateOffset.name
Return a string representing the base frequency.
1084-2、参数
无
1084-3、功能
用于获取或设置DateOffset实例的名称,名称通常是一个字符串,用于标识该时间偏移的类型或作用。
1084-4、返回值
返回DateOffset实例的名称,如果没有特别设置名称,则可能返回None。
1084-5、说明
无
1084-6、用法
1084-6-1、数据准备
无
1084-6-2、代码示例
# 1084、pandas.tseries.offsets.DateOffset.name属性
import pandas as pd
class CustomDateOffset:
def __init__(self, years=0, months=0, days=0, name=""):
self.offset = pd.DateOffset(years=years, months=months, days=days)
self.name = name
# 创建CustomDateOffset对象
custom_offset = CustomDateOffset(years=1, months=2, days=3, name='One Year, Two Months, Three Days')
# 获取当前的名称
current_name = custom_offset.name
print(current_name)
# 设置新的名称
custom_offset.name = 'Updated Name'
print(custom_offset.name)
1084-6-3、结果输出
# 1084、pandas.tseries.offsets.DateOffset.name属性
# One Year, Two Months, Three Days
# Updated Name
1085、pandas.tseries.offsets.DateOffset.normalize属性
1085-1、语法
# 1085、pandas.tseries.offsets.DateOffset.normalize属性
pandas.tseries.offsets.DateOffset.normalize
1085-2、参数
无
1085-3、功能
1085-3-1、标准化:当normalize=True时,在应用偏移量后,结果时间戳的时间部分会被标准化为午夜(即00:00:00
),意味着无论原始时间戳的具体时间如何,在添加偏移后,它们的时间部分都会被清零,以便专注于日期变化。
1085-3-2、维持原时间:当normalize=False(默认行为)时,在应用偏移量后,原始时间戳的时间部分会被保留并应用于结果中,对于需要保持时间精度的操作非常有用。
1085-4、返回值
1085-4-1、标准化偏移:日期加了一天,且时间部分归零,表示结果被标准化到当天的午夜时刻。
1085-4-2、非标准化偏移:日期加了一天,时间部分保持不变。
1085-5、说明
无
1085-6、用法
1085-6-1、数据准备
无
1085-6-2、代码示例
# 1085、pandas.tseries.offsets.DateOffset.normalize属性
import pandas as pd
# 创建一个带时间的时间戳
timestamp = pd.Timestamp('2024-11-19 21:56:45')
# 创建一个DateOffset对象,并启用normalize
offset = pd.DateOffset(days=1, normalize=True)
# 应用偏移
normalized_date = timestamp + offset
print(f"Original timestamp: {timestamp}")
print(f"Normalized timestamp: {normalized_date}")
1085-6-3、结果输出
# 1085、pandas.tseries.offsets.DateOffset.normalize属性
# Original timestamp: 2024-11-19 21:56:45
# Normalized timestamp: 2024-11-20 00:00:00