Python 2.7:在Pandas中将数据附加到表中

时间:2014-02-26 08:10:06

标签: python pandas hdf5 pytables

我正在从图像文件中读取数据,我想将这些数据附加到单个HDF文件中。这是我的代码:

datafile = pd.HDFStore(os.path.join(path,'imageData.h5'))
for file in fileList: 
     data = {'X Position' :  pd.Series(xpos, index=index1),
             'Y Position' :  pd.Series(ypos, index=index1),
             'Major Axis Length' :  pd.Series(major, index=index1),
             'Minor Axis Length' :  pd.Series(minor, index=index1), 
             'X Velocity' :  pd.Series(xVelocity, index=index1),
             'Y Velocity' :  pd.Series(yVelocity, index=index1) }
    df = pd.DataFrame(data)
    datafile['df'] = df
    datafile.close()

这显然是不正确的,因为每次循环运行时它会用新的数据覆盖每组数据。

如果不是datafile['df'] = df,我会使用

datafile.append('df',df)    

OR

df.to_hdf(os.path.join(path,'imageData.h5'), 'df', append=True, format = 'table')

我收到错误:

ValueError: Can only append to Tables

我提到documentation和其他SO questions,但没有用。

所以,我希望有人可以解释为什么这不起作用以及如何将所有数据成功附加到一个文件中。如果有必要,我愿意使用不同的方法(也许是pyTables)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这将在0.11中起作用。创建组后(例如,存储数据的标签,此处为'df')。如果您存储fixed格式,它将覆盖(如果您尝试追加将给出上述错误消息);如果你写了table格式,可以追加。请注意,在0.11中,to_hdf无法正确地将关键字传递到基础函数,因此您只能使用它来编写fixed格式。

datafile = pd.HDFStore(os.path.join(path,'imageData.h5'),mode='w')
for file in fileList: 
     data = {'X Position' :  pd.Series(xpos, index=index1),
             'Y Position' :  pd.Series(ypos, index=index1),
             'Major Axis Length' :  pd.Series(major, index=index1),
             'Minor Axis Length' :  pd.Series(minor, index=index1), 
             'X Velocity' :  pd.Series(xVelocity, index=index1),
             'Y Velocity' :  pd.Series(yVelocity, index=index1) }
    df = pd.DataFrame(data)
    datafile.append('df',df)
datafile.close