【问题标题】:How to append data to a panel which is stored in HDFStore file如何将数据附加到存储在 HDFStore 文件中的面板
【发布时间】:2014-06-29 13:42:52
【问题描述】:

我有一个面板存储在一个文件中,我想将更多数据附加到该面板 在内存中追加工作正常,但是在尝试将数据追加到文件时出现此错误:

import pandas as pd
import numpy as np

df = pd.DataFrame(data = np.random.randn(5,6),columns=('a','b','c','d','e','f'))
pw =  pd.Panel(major_axis = df.columns,minor_axis=df.index)
pw2 = pd.Panel(major_axis = df.columns,minor_axis=df.index)
pw['A'] = df
pw['B'] = df*2
pw['C'] = df*3
pw2['D'] = df*4

pw.to_hdf('proc.h5','proc' , mode='w',format='table',append=True)
pw2.to_hdf('proc.h5','proc' , mode='a',format='table',append=True)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 884, in to_hdf
return pytables.to_hdf(path_or_buf, key, self, **kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 279, in to_hdf
f(store)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 272, in <lambda>
f = lambda store: store.append(key, value, **kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 914, in append
**kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 1273, in _write_to_group
s.write(obj=value, append=append, complib=complib, **kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 3578, in write
**kwargs)
File "C:\Python27\lib\site-packages\pandas\io\pytables.py", line 3229, in create_axes
item in items))
ValueError: cannot match existing table structure for [A,B,C] on appending data

【问题讨论】:

    标签: python pandas append panel hdfstore


    【解决方案1】:

    axes 参数的文档是 here

    存储 > 2 暗淡的对象(Panel 是 3 暗淡的)将对象展平为表结构,其中(在本例中)major_axisminor_axis 是索引。 items 轴是表格中的“列”。

    因此,任何索引都允许附加,因此您可以附加一个已更改长轴和/或短轴的新面板。但是,第一次附加表格时,项目轴是固定的。

    为了提高效率,PyTables/HDF5 需要这个固定维度。

    如果您愿意,可以指定要附加的不同轴,例如。 axes=['items','major_axis'] 或简单地转置面板以获得您需要的形式。这是一个必须在 first 追加时指定的参数。

    您可以查看使用ptdump -av &lt;file.h5&gt; 创建的结构。

    【讨论】:

      猜你喜欢
      • 2014-03-06
      • 2020-03-15
      • 2012-10-18
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多