使用pandas附加hdf5表会导致pytable异常AttributeError

时间:2015-07-21 11:32:35

标签: python pandas anaconda hdf5 pytables

使用本月Anaconda 2.3.0发行版的pandas(0.16.2)pytables(3.2.0)hdf5(1.8.15.1)。

第一个csv文件被正确读取并写为hdf5表。但是第二个文件导致pytables中出现AttributeError。 (见下面的代码中的评论)

with pd.HDFStore("%s\\myScores.h5" % outPath, mode = 'a', complib= 'zlib') as hdfStore:
    for sFile in sFileLst:
        absFileName = os.path.join(xScoresDir, sFile)
        df =  pd.read_csv(absFileName, delimiter=';', error_bad_lines=False)
        print df.head()
        hdfStore.append('/xScores', df, min_itemsize = 50)
        #problem exists at appending table nr2
        #class Table(fixed) in pytables

例外:

    debughdf5.py,  line 88
        hdfStore.append('/xScores', df, min_itemsize = 50)
    pytables.py,  line 912, in append
        **kwargs)
    pytables.py,  line 1268, in _write_to_group
        s.write(obj=value, append=append, complib=complib, **kwargs)
    pytables.py,  line 3805, in write
        self.write_data(chunksize, dropna=dropna)
    pytables.py,  line 3812, in write_data
        nrows = self.nrows_expected
    pytables.py,  line 2956, in nrows_expected
        return np.prod([i.cvalues.shape[0] for i in self.index_axes])
    AttributeError: 'NoneType' object has no attribute 'shape'
    i.cvalues does not exist! self.index_axes = [name->index,cname->index,axis->0,pos->0,kind->integer]

即使通过dtype= {colName1:np.float, colName2:np.str}覆盖read_csv中的自动类型推断,问题也保持不变。

可能这个问题是在最新的更新中引入的,因为我以前不记得这样了。

是否可以通过改进上述代码来解决这个问题?

谢谢!

0 个答案:

没有答案