Pandas HDFStore 奇怪的行为
Pandas HDFStore weird behaviour
我对此很困惑,我有两个脚本 运行ning 来自同一个笔记本服务器。我在同一个文件夹中有一个 HDFStore,但是对于一个脚本,它看起来是空的,而对于另一个则不是。这是两个笔记本中的相同代码 运行:
import os
os.getcwd()
Return 注意事项 1:'E:\DoingDataScience\Identify\Scripts'
Return 注意 2:'E:\DoingDataScience\Identify\Scripts'
store = pd.HDFStore('data_test.h5')
store.items
Return 注意事项 1:
<bound method HDFStore.items of <class 'pandas.io.pytables.HDFStore'>
File path: data_test.h5
/test_database frame (shape->[3,5])>
Return 注意 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:
注意事项 1 和注意事项 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 错误回溯
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5F.c",第 604 行,在 H5Fopen 中
无法打开文件
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fint.c",第 1085 行,在 H5F_open 中
无法读取超级块
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fsuper.c",第 294 行,在 H5F_super_read 中
无法加载超级块
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5AC.c",第 1320 行,在 H5AC_protect 中
H5C_protect() 失败。
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5C.c",第 3574 行,在 H5C_protect 中
无法加载条目
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5C.c",第 7954 行,在 H5C_load_entry 中
无法加载条目
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fsuper_cache.c",第 476 行,在 H5F_sblock_load 中
t运行 分类文件:eof = 800,sblock->base_addr = 0,stored_eoa = 1181448
HDF5 错误回溯结束
无法 open/create 文件 'data_test.h5'
很可能你已经写了你的数据
/test_database frame (shape->[3,5])>
在 NB1 的会话中并且没有关闭 store
(这将保存并刷新您对 file/disk 的更改)
所以当您在 NB2 中打开 h5
文件时,它还没有刷新,因此是空的。
我对此很困惑,我有两个脚本 运行ning 来自同一个笔记本服务器。我在同一个文件夹中有一个 HDFStore,但是对于一个脚本,它看起来是空的,而对于另一个则不是。这是两个笔记本中的相同代码 运行:
import os
os.getcwd()
Return 注意事项 1:'E:\DoingDataScience\Identify\Scripts'
Return 注意 2:'E:\DoingDataScience\Identify\Scripts'
store = pd.HDFStore('data_test.h5')
store.items
Return 注意事项 1:
<bound method HDFStore.items of <class 'pandas.io.pytables.HDFStore'>
File path: data_test.h5
/test_database frame (shape->[3,5])>
Return 注意 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:
注意事项 1 和注意事项 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 错误回溯
文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5F.c",第 604 行,在 H5Fopen 中 无法打开文件 文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fint.c",第 1085 行,在 H5F_open 中 无法读取超级块 文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fsuper.c",第 294 行,在 H5F_super_read 中 无法加载超级块 文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5AC.c",第 1320 行,在 H5AC_protect 中 H5C_protect() 失败。 文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5C.c",第 3574 行,在 H5C_protect 中 无法加载条目 文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5C.c",第 7954 行,在 H5C_load_entry 中 无法加载条目 文件 "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fsuper_cache.c",第 476 行,在 H5F_sblock_load 中 t运行 分类文件:eof = 800,sblock->base_addr = 0,stored_eoa = 1181448
HDF5 错误回溯结束
无法 open/create 文件 'data_test.h5'
很可能你已经写了你的数据
/test_database frame (shape->[3,5])>
在 NB1 的会话中并且没有关闭 store
(这将保存并刷新您对 file/disk 的更改)
所以当您在 NB2 中打开 h5
文件时,它还没有刷新,因此是空的。