我有一个熊猫数据帧中的索引(注意频率:H) -写入HDFStore时,是否可以保留Pandas tseries DatetimeIndex的频率?
<class 'pandas.tseries.index.DatetimeIndex'>
[2011-01-01 00:00:00, ..., 2013-12-31 23:00:00]
Length: 26304, Freq: H, Timezone: None
有多个列,但排第几(和其他散落各处)都NA条目。如果我写这篇文章的HDF文件这样的:
hdfstore.put('/table', df, format='table', data_columns=True, append=False)
,然后读回用:
df = hdfstore['/table']
,并期待指数,我看到:
<class 'pandas.tseries.index.DatetimeIndex'>
[2011-01-11 04:00:00, ..., 2013-12-31 23:00:00]
Length: 24656, Freq: None, Timezone: None
注意, Freq现在为None,并且行数少,开始日期时间晚。第一行现在是原始DataFrame的第一行,其中至少包含一个非NA列值。
首先,这是由于HDF5格式的局限性,数据帧的存储方式或错误而导致的预期行为?
有没有一种干净的方法来避免这种情况的发生,或者我只是需要在加载后“修复”索引。不知道做这件事的最好方法是什么。
一个快速又脏的解决方法是只添加一个包含全0的虚拟列。然后,在重新加载时,DatetimeIndex的Freq被保留。显然,这有不必要的存储开销。 – DavidJ