【问题标题】:Append new columns to HDFStore with pandas使用 pandas 将新列附加到 HDFStore
【发布时间】: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 这是一个有趣的解决方法,但非常糟糕,除非列都是相同的类型。如果您有不同的类型,那么转置将意味着所有列都有对象类型。

标签: pandas hdf5 hdfstore


【解决方案1】:

您将列标题保留在代码 [1, 2, 3, ...] 中,并尝试在 DataFrame 中附加不同的列 [500, 501, 502, ...]

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 2018-11-08
    • 2015-03-06
    • 2021-08-08
    • 2020-07-29
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多