<p>你有两个选择:</p>
<ul>
<li><code>pd.infer_freq</code></li>
<li><code>pd.tseries.frequencies.to_offset</code></li>
</ul>
<blockquote>
<p>I suspect that errors down the road are caused by the missing freq.</p>
</blockquote>
<p>你完全正确。以下是我经常使用的:</p>
<pre><code>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
</code></pre>
<p>例如:</p>
<pre><code>idx=pd.to_datetime(['2003-01-02', '2003-01-03', '2003-01-06']) # freq=None
print(add_freq(idx)) # inferred
DatetimeIndex(['2003-01-02', '2003-01-03', '2003-01-06'], dtype='datetime64[ns]', freq='B')
print(add_freq(idx, freq='D')) # explicit
DatetimeIndex(['2003-01-02', '2003-01-03', '2003-01-06'], dtype='datetime64[ns]', freq='D')
</code></pre>
<p>使用<code>asfreq</code>实际上会重新索引(填充)丢失的日期,因此如果这不是您要查找的,请小心。</p>
<blockquote>
<p>The primary function for changing frequencies is the <code>asfreq</code> function.
For a <code>DatetimeIndex</code>, this is basically just a thin, but convenient
wrapper around <code>reindex</code> which generates a <code>date_range</code> and calls <code>reindex</code>.</p>
</blockquote>