【发布时间】:2018-06-18 18:20:09
【问题描述】:
我有多个具有分层组织的 pd.DataFrames。假设我有:
day_temperature_london_df = pd.DataFrame(...)
night_temperature_london_df = pd.DataFrame(...)
day_temperature_paris_df = pd.DataFrame(...)
night_temperature_paris_df = pd.DataFrame(...)
我想将它们分组到 hdf5 文件中,因此其中两个进入组“伦敦”,另外两个进入组“巴黎”。
如果我使用 h5py,我会丢失 pd.DataFrame 的格式,丢失索引和列。
f = h5py.File("temperature.h5", "w")
grp_london = f.create_group("london")
day_lon_dset = grp_london.create_dataset("day", data=day_temperature_london_df)
print day_lon_dset[...]
这给了我一个 numpy 数组。有没有办法以与.to_hdf 相同的方式存储许多具有层次结构的数据帧 - 它保留数据帧的所有属性?
【问题讨论】:
-
h5py保存numpy数组。pandas有自己的方法来保存整个数据帧。我认为它使用pytables而不是h5py,尽管可以使用h5py读取生成的文件。实际上,它将数据帧值和索引保存为某种组中的单独数组。我在前面的 SO 问题中探讨了这种结构。 -
HDFStore、pandas.pydata.org/pandas-docs/stable/cookbook.html#cookbook-hdf 可能会为您提供存储 pandas 对象的最大能力。我可以用group/df2', but I can't (so far) create or load just agroup`之类的复合键来存储东西。 -
@hpaulj 是的,这就是问题所在 - 我可以创建“组/df”,但不能只调用“组”。此外,通过使用同一组(出于某种原因)编写多个键,它使用的磁盘空间量增加了一倍以上
标签: python pandas numpy hdf5 h5py