【发布时间】:2013-04-03 02:33:03
【问题描述】:
我正在使用 Pandas,并制作一个 HDFStore 对象。我计算了 500 列数据,并将其写入表格格式的 HDFStore 对象。然后我关闭文件,从内存中删除数据,执行接下来的 500 列(由递增的整数标记),打开存储,并尝试追加新列。然而,它不喜欢这样。它给了我一个错误
invalid combinate of [non_index_axes] on appending data [[(1, [500, 501, 502, ...])]] vs current table [[(1, [0, 1, 2, ...])]]
我假设它只允许附加更多行而不是列。那么如何添加更多列呢?
【问题讨论】:
-
您必须将列添加到新节点。
store['node1'] = df1然后是'store['node2'] = df2 -
HDFStore(和一般的 HDF5)是面向行的。您将希望在行上附加并使其成为最长的维度。正如 Zelazny7 所指出的,您可以通过创建另一个节点来添加列,请记住,您需要自己保持这些同步(IOW 它们应该具有相同的行索引),请参阅:pandas.pydata.org/pandas-docs/dev/…
-
一种解决方法可能是将您的数据帧转置存储:将您的 500 列写为 500 行,然后附加下一个 500,依此类推。当您重新读取数据帧时,您只需将其转置以获得您期望的格式。与单独存储所有列相比,这似乎不太可能产生错误。
-
请添加代码以显示您的问题以获得良好的可用答案。
-
@Nathan 这是一个有趣的解决方法,但非常糟糕,除非列都是相同的类型。如果您有不同的类型,那么转置将意味着所有列都有对象类型。