使用本月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中的自动类型推断,问题也保持不变。
可能这个问题是在最新的更新中引入的,因为我以前不记得这样了。
是否可以通过改进上述代码来解决这个问题?
谢谢!