(在Pandas中)为什么在HDF5中作为表存储时频率信息会丢失?

时间:2013-05-01 00:28:49

标签: pandas hdf5 pytables

我将时间序列数据以HDF5格式存储在pandas中,因为我希望能够直接在磁盘上访问数据,所以我在编写时使用PyTable格式table=True

在将我的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无法存储或复制此信息的根本原因是什么?或者这是一个可能的小熊猫吗?

1 个答案:

答案 0 :(得分:2)

刚从熊猫那里证实,这在当前版本中没有实现。

请参阅:https://github.com/pydata/pandas/issues/3499#issuecomment-17262905了解解决方法。

我会在答案可用时更新。