我有一个固定的时间序列频率date
,我希望比较Pandas DataFrame中的数据频率。
因此,例如,我获得了一个带有pd.infer_freq(df['date'])
列的DataFrame,我可以使用'H'
来推断其时间频率,'M'
会返回,例如{{1}}。那很棒!我现在可以说'H'(每小时)比'MS'(月开始)更频繁。但鉴于我不知道DataFrame总是有多少频率(我只提供'H'作为例子),我如何将它与我的固定时间频率('MS')进行比较?
我尝试将all possible time frequencies按频率顺序放入列表/元组中,然后将列表中的“MS”索引与列表中推断频率的索引进行比较。但是这很容易出错,因为如果DataFrame有一个{{1}}(月末)频率,而在我的列表中'M'出现在'MS'之前,则可以得出结论M的频率低于MS,这显然是假的,因为两者是相等的频率。
Pandas甚至有办法进行时间频率比较吗?
谢谢
答案 0 :(得分:1)
您可以创建一个字典,将所有可能的时间频率映射到一个数字,其中较小的数字表示它的频率较高。这允许您将相同的频率映射到不同的描述到相同的数字。然后只需创建一个比较函数
dct = {'N': 0, 'U': 1, 'us': 1, 'L': 2, 'ms': 2}
然后你可以用它来映射输出以进行比较。
dct['us'] < dct['U']
#False
dct['us'] = dct['U']
#True