2

我写了两个脚本。

第一个脚本设计为只运行一次,并创建一个名为df_empty的大型空数据框,使用脚本中的以下代码将其保存到 HDF5 文件storage.h5中:

from pandas import HDFStore
hdf = HDFStore('storage.h5')
hdf.put('d1', df_empty, format='table', data_columns=True)

这完美地工作。

我的下一个脚本设计为每 30 分钟运行一次,并从每半小时生成的 CSV 文件中获取数据,并且:

  1. 将此数据放入新的数据框df

  2. 将storage.h5中的数据框导入为df2

  3. 使用 index union 命令将dfdf2合并到df3中;

  4. 将新的数据帧保存回storage.h5,有效地覆盖以前的文件。

相关部分代码如下:

from pandas import HDFStore
store = pd.HDFStore('storage.h5')
df2 = pd.DataFrame(store['d1'])
df3 = df.reindex(index = df2.index.union(df.index))
hdf.put('d1', df3, format='table', data_columns=True)

如果我在 Jupyter Notebook 中按顺序运行这两个脚本(我已经安装了最新版本的 Anaconda 并在 Windows 7 机器上运行它),这将很有效。

但是,当我从命令提示符运行时,我遇到了问题。第一个脚本运行没有错误。但是,第二个脚本会引发以下错误:

回溯(最后一次调用):文件“myfile.py”,第 64 行,在 hdf.put('d1', df3, format='table', data_columns=True) NameError: name 'hdf' is not defined 关闭剩余打开文件:storage.h5...donestorage.h5...done

有人对我可能做错了什么有任何建议吗?

4

1 回答 1

2

我无法评论,因为我没有足够的声誉,

但是您是否有可能打开 hd5 存储并将其分配给变量

店铺

当您尝试使用变量输入新数据时

高清晰度电视?

于 2016-11-01T13:19:53.867 回答