Pandas HDF存储奇怪的行为

时间:2016-06-05 18:03:40

标签: python pandas hdfstore

我很困惑,我有两个脚本从同一个Notebook服务器运行。我在同一个文件夹中有一个HDFStore,但是对于一个脚本,它看起来是空的,而对于另一个脚本它看起来不是。以下是两个笔记本中运行的相同代码:

import os 
os.getcwd()

返回NB 1:' E:\ DoingDataScience \ Identify \ Scripts'

返回NB 2:' E:\ DoingDataScience \ Identify \ Scripts'

store = pd.HDFStore('data_test.h5')
store.items

返回NB 1:

<bound method HDFStore.items of <class 'pandas.io.pytables.HDFStore'>
File path: data_test.h5
/test_database            frame        (shape->[3,5])>

返回NB 2:

<bound method HDFStore.items of <class 'pandas.io.pytables.HDFStore'>
File path: data_test.h5
Empty>

所有情况看起来都一样。它是否跟踪Pandas DF的来源?我认为这可能是因为NB 1已经打开了文件,因为NB 1创建了它。然而杀死NB 1并重新启动NB 2也没有做任何事情。

编辑:添加了os.stats:

NB 1和NB 2:

nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, 
st_uid=0, st_gid=0, st_size=1311400L, st_atime=1465072325L, 
st_mtime=1465149771L, st_ctime=1465072325L)

更新:重新启动后,我收到了新错误:

HDF5ExtError:HDF5错误回溯

文件&#34; C:\ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5F.c&#34;,第604行,在H5Fopen中     无法打开文件   文件&#34; C:\ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5Fint.c&#34;,第1085行,在H5F_open中     无法读取超级块   文件&#34; C:\ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5Fsuper.c&#34;,第294行,在H5F_super_read中     无法加载超级块   文件&#34; C:\ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5AC.c&#34;,第1320行,在H5AC_protect中     H5C_protect()失败了。   文件&#34; C:\ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5C.c&#34;,第3574行,H5C_protect     无法加载条目   文件&#34; C:\ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5C.c&#34;,第7954行,在H5C_load_entry中     无法加载条目   文件&#34; C:\ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5Fsuper_cache.c&#34;,第476行,在H5F_sblock_load中     截断文件:eof = 800,sblock-&gt; base_addr = 0,stored_eoa = 1181448

HDF5错误返回跟踪结束

无法打开/创建文件&#39; data_test.h5&#39;

1 个答案:

答案 0 :(得分:2)

很可能你已经写了数据

/test_database            frame        (shape->[3,5])>

在NB1的会话中并没有关闭store(这会保存并刷新您对文件/磁盘的更改)

因此,当您在NB2中打开h5文件时,它尚未刷新,因此为空。