您在这里有几个选择:
pd.infer_freq
pd.tseries.frequencies.to_offset
我怀疑将来的错误是由于缺少频率引起的。
你是绝对正确的。这是我经常使用的:
def add_freq(idx, freq=None): """Add a frequency attribute to idx, through inference or directly. Returns a copy. If `freq` is None, it is inferred. """ idx = idx.copy() if freq is None: if idx.freq is None: freq = pd.infer_freq(idx) else: return idx idx.freq = pd.tseries.frequencies.to_offset(freq) if idx.freq is None: raise AttributeError('no discernible frequency found to `idx`. Specify' ' a frequency string with `freq`.') return idx一个例子:
idx=pd.to_datetime(['2003-01-02', '2003-01-03', '2003-01-06']) # freq=Noneprint(add_freq(idx)) # inferredDatetimeIndex(['2003-01-02', '2003-01-03', '2003-01-06'], dtype='datetime64[ns]', freq='B')print(add_freq(idx, freq='D')) # explicitDatetimeIndex(['2003-01-02', '2003-01-03', '2003-01-06'], dtype='datetime64[ns]', freq='D')
使用
asfreq实际上会为丢失的日期重新索引(填充),因此,如果这不是您想要的内容,请当心。
改变频率的主要功能是
asfreq功能。对于a来说DatetimeIndex,这基本上只是一个薄而方便的包装器,可在reindex其周围生成date_range和调用reindex。



