如何验证字符串是否对应于有效的日期时间频率?(例如"1D")



简而言之,python中有几个日期时间功能可以让您使用频率来重新采样日期范围(例如,每天,每周等,以ts.resample('1D'(.apply(np.sum(的形式使用(,但我还没有找到任何机制来验证字符串是否是有效的频率。

我查看了文档,在那里我找到了偏移别名,但仍然无法验证它。

我还在 (pd.offsets.prefix_mapping( 中找到了一个带有偏移量prefix_mapping,但我想要使用这个prefix_mapping我必须从字符串中删除数值(例如">M"而不是"3M">(。

我也不确定这两个是否对应于相同的数据结构。

TLDR:

是否有任何直接的方法可以验证字符串是否对应于偏移/频率?如何确保频率有效?

freq = '2D'
# TODO Validate freq
pd.date_range(start='1/1/2018', end='1/09/2018', freq=freq)

使用 pandas 函数to_offset

https://pandas.pydata.org/docs/reference/api/pandas.tseries.frequencies.to_offset.html

from pandas.tseries.frequencies import to_offset
to_offset("5min")
to_offset("1D1H")
to_offset("2W")
to_offset("3X")

最后的to_offset调用将生成错误:

值错误: 无效频率: 3X

因此,您只需使用 try/except 来验证任何给定的偏移别名。

使用正则表达式,例如:

[0-9][DM]

1D2D3M将符合前面的正则表达式。

有关 Python 中附带的正则表达式实现的更多信息,请参阅 Python 文档。

最新更新