Pandas,包含不同数字列的大文件,在内存中附加

时间:2014-02-19 14:03:44

标签: 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,col3] on appending data

在这些情况下,我想获得类似于普通DataFrame追加功能的行为 用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)

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

1 个答案:

答案 0 :(得分:1)

HDFStore存储面向行,因此目前无法实现。

您可能需要阅读,追加并写出来。可能你可以使用:http://pandas.pydata.org/pandas-docs/stable/io.html#multiple-table-queries

但是,您也可以创建包含开头可能的所有列的表(并且只留下它们)。