如何设置 pandas 索引的频率?

LGR*_*LGR 6 python dataframe pandas

这基本上是我的代码:

df = pd.read_csv('XBT_60.csv', index_col = 'date', parse_dates = True)
df.index.freq = 'H'
Run Code Online (Sandbox Code Playgroud)

我加载 csv,将索引设置为日期列,并将频率设置为“H”。但这会引发此错误:

ValueError: Inferred frequency None from passed values does not conform to passed frequency H
Run Code Online (Sandbox Code Playgroud)

日期列的格式为:2017-01-01 00:00:00

我已经尝试加载 csv 而不设置索引列,并在将其设置为索引之前在日期列上使用 pd.to_datetime ,但我仍然无法设置频率。我该如何解决这个问题?

顺便说一句:我的目标是使用 statsmodels 中的seasonal_decompose() 方法,所以我需要那里的频率。

Cor*_*ien 8

如果缺少索引值,则无法设置频率:

>>> df
            val
2019-09-15    0
2019-09-16    1
2019-09-18    3

>>> df.index.freq = 'D'
...
ValueError: Inferred frequency None from passed values does not conform to passed frequency D
Run Code Online (Sandbox Code Playgroud)

要查找缺失的索引,请使用:

>>> df = df.resample('D').first()
            val
2019-09-15  0.0
2019-09-16  1.0
2019-09-17  NaN
2019-09-18  3.0

>>> df.index.freq
<Day>
Run Code Online (Sandbox Code Playgroud)

要进行调试,请查找丢失的索引:

>>> pd.date_range(df.index.min(), df.index.max(), freq='D').difference(df.index)
DatetimeIndex(['2019-09-17'], dtype='datetime64[ns]', freq=None)
Run Code Online (Sandbox Code Playgroud)