Python 如何验证字符串是否对应于有效的日期时间频率?(如&x27;1D&x27;)
简而言之,python中有几个datetime功能允许您使用频率对日期范围进行重新采样(例如,每日、每周等,以ts.resample('1D').apply(np.sum)的形式使用),但我还没有找到任何机制来验证字符串是否为有效频率 我查看了文档,在那里我找到了,但仍然无法验证它 我还在(pd.offsets.prefix_映射)中找到了一个带有偏移量的前缀映射,但我认为要使用这个前缀映射,我必须从字符串中删除数值(例如,'M'而不是'3M') 我也不确定这两者是否对应于相同的数据结构 TLDR: 是否有任何直接的方法来验证字符串是否对应于偏移量/频率?如何确保freq有效Python 如何验证字符串是否对应于有效的日期时间频率?(如&x27;1D&x27;),python,pandas,datetime,Python,Pandas,Datetime,简而言之,python中有几个datetime功能允许您使用频率对日期范围进行重新采样(例如,每日、每周等,以ts.resample('1D').apply(np.sum)的形式使用),但我还没有找到任何机制来验证字符串是否为有效频率 我查看了文档,在那里我找到了,但仍然无法验证它 我还在(pd.offsets.prefix_映射)中找到了一个带有偏移量的前缀映射,但我认为要使用这个前缀映射,我必须从字符串中删除数值(例如,'M'而不是'3M') 我也不确定这两者是否对应于相同的数据结构 TLD
freq = '2D'
# TODO Validate freq
pd.date_range(start='1/1/2018', end='1/09/2018', freq=freq)
使用正则表达式,如:
[0-9][DM]
1D
或2D
或3M
将符合前面的正则表达式
有关Python中的正则表达式实现的更多信息,请参阅。使用pandas函数进行偏移: 最后的to_offset调用将生成错误: ValueError:无效频率:3X
因此,您可以使用try/except来验证任何给定的偏移量别名。带有输入片段和预期输出的问题得到比文本解释更好的回答。谢谢@mohanys。为了便于阅读,我将其添加为TLDR。不幸的是,有很多不同的有效版本。我认为正则表达式不能解决我的问题。不过,谢谢你。我看不到你似乎看到的反例。你能详细说明一下吗?例如,1h23m。这不是反例<代码>([0-9]M)?([0-9][Hh])?([0-9]|1[0-9]|2[0-3])[Mm])?适合于此。(如果空字符串是有效输入)。谢谢你,马克!好久不见了,啊哈
from pandas.tseries.frequencies import to_offset
to_offset("5min")
to_offset("1D1H")
to_offset("2W")
to_offset("3X")