Database 熊猫,具有不同列数的大文件,内存中追加

Database 熊猫,具有不同列数的大文件,内存中追加,database,pandas,hdf5,pytables,Database,Pandas,Hdf5,Pytables,我想在hdf5文件中维护一个大的PyTable。 通常,随着新数据的出现,我会将以下内容附加到现有表中: store = pd.HDFStore(path_to_dataset, 'a') store.append("data", newdata) store.close() 但是,如果旧存储数据的列和传入新数据的列仅部分重叠,则返回以下错误: Exception: cannot match existing table structure for [col1,col2

我想在hdf5文件中维护一个大的PyTable。 通常,随着新数据的出现,我会将以下内容附加到现有表中:

    store = pd.HDFStore(path_to_dataset, 'a')
    store.append("data", newdata)
    store.close()
但是,如果旧存储数据的列和传入新数据的列仅部分重叠,则返回以下错误:

Exception: cannot match existing table structure for [col1,col2,col3] on appending data
在这些情况下,我希望得到一个类似于普通DataFrame append函数的行为 它用NAN填充非重叠条目

import pandas as pd
a = {"col1":range(10),"col2":range(10)}
a = pd.DataFrame(a)
b = {"b1":range(10),"b2":range(10)}
b = pd.DataFrame(b)
a.append(b)

是否可能“在内存中”有类似的操作,或者我需要创建一个全新的文件?

HDFStore
以行为导向存储,因此目前不可能这样做

您可能需要读入、附加和写出它。可能您可以使用:


但是,您也可以在开始时创建包含所有可能列的表(并且只保留为nan)。

HDFStore存储面向行的数据,因此这在当前是不可能的。您可能需要阅读、附加和写出它。可能您可以使用:最好的方法是创建一个表,表的开头包含所有可能的列(只需将它们保留为nan)