我确信我只是没有找到正确的短语来回答这个问题,但在Pandas中,可以使用任何DateTime对象,并使用DateOffset对其进行加减,如:
pd.datetime.now() + pd.DateOffset(months=2)
pd.datetime.now() + pd.DateOffset(weeks=4)
pd.datetime.now() + pd.DateOffset(days=2)
等等
但在不同的上下文中,也会使用偏移别名: https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases
我的问题是,有没有一种方法可以使用DateOffset并传递偏移量别名来确定偏移量基准
例如:pd.datetime.now() + pd.DateOffset(n=some_int, freq='W')
周some_int
周
如果这是不可能的,我应该在哪里挖掘得到这样的效果
(原因是我使用了一个函数Offset Alias,我不想创建一个很长的if…else语句来将freq字符串转换为pd.DateOffset(weeks=n | years=n | months=n | etc.)
的不同实例,而是freq字符串在一行代码中指示日期偏移量,并且仍然是动态的,以处理不同的时间频率。)
编辑:添加一个自定义函数来满足我的需要,但最好在timedelta或DateOffset中有一个解决方案,这样该解决方案是上游的,效率更高。例如,我希望利用我正在使用的所有freq
参数的业务版本,以便n
能够从源代码中获取更自然、更原始的信息
def datedelta(date, n=0, freq='M'):
from pandas import to_datetime, DateOffset
if n == 0:
date_sign = 1
else:
date_sign = np.abs(n)/n
freq = freq.lower()
if freq == 'y':
dtOff = DateOffset(years=abs(n))
elif freq == 'q':
dtOff = DateOffset(quarters=abs(n))
elif freq == 'm':
dtOff = DateOffset(months=abs(n))
elif freq == 'w':
dtOff = DateOffset(weeks=abs(n))
elif freq == 'd':
dtOff = DateOffset(days=abs(n))
else:
raise ValueError("The freq parameter not one of the following: {'Y', 'Q', 'M', 'W', 'D'}")
return to_datetime(date) + date_sign * dtOff
我认为^{} function 正在做你想做的事
更新
to_timedelta
函数不再支持月、季和年。时间偏移有两种类型的对象:有关documentation about it的更多详细信息。
to_timedelta
函数无法知道要使用哪个函数也许这个功能会有帮助
相关问题 更多 >
编程相关推荐