我在 pandas 中以 HDF5 格式存储时间序列数据,因为我希望能够直接访问磁盘上的数据,所以我在table=True
写入时使用了 PyTable 格式。
看来我在将 TimeSeries 对象写入 HDF5 后会丢失频率信息。
这可以通过is_table
在下面的脚本中切换值来看到:
import pandas as pd
is_table = False
times = pd.date_range('2000-1-1', periods=3, freq='H')
series = pd.Series(xrange(3), index=times)
print 'frequency before =', series.index.freq
frame = pd.DataFrame(series)
with pd.get_store('data/simple.h5') as store:
store.put('data', frame, table=is_table)
with pd.get_store('data/simple.h5') as store:
x = store['data']
print 'frequency after =', x[0].index.freq
与is_table = False
:
frequency before = <1 Hour>
frequency after = <1 Hour>
与is_table = True
:
frequency before = <1 Hour>
frequency after = None
在我看来,PyTables 提供了更丰富的存储机制,但事实并非如此。
PyTables 无法存储或复制这些信息是否存在根本原因?或者这是一个可能的错误熊猫?