在Pandas中将列附加到HDF文件的帧中

我正在使用CSV格式的大型数据集。 我正在尝试逐列处理数据,然后将数据追加到HDF文件中的帧中。 所有这些都是使用Pandas完成的。 我的动机是,虽然整个数据集比我的物理内存大得多,但列大小是可管理的。 在稍后的阶段,我将通过将列逐个加载回内存并对其进行操作来执行功能逻辑回归。

我能够创建一个新的HDF文件并在第一列创建一个新的帧:

hdf_file = pandas.HDFStore('train_data.hdf')
feature_column = pandas.read_csv('data.csv', usecols=[0])
hdf_file.append('features', feature_column)

但是在那之后,当试图在框架中追加一个新列时,我得到一个ValueError:

feature_column = pandas.read_csv('data.csv', usecols=[1])
hdf_file.append('features', feature_column)

堆栈跟踪和错误消息:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pandas/io/pytables.py", line 658, in append self._write_to_group(key, value, table=True, append=True, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/pytables.py", line 923, in _write_to_group s.write(obj = value, append=append, complib=complib, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/pytables.py", line 2985, in write **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/pytables.py", line 2675, in create_axes raise ValueError("cannot match existing table structure for [%s] on appending data" % items)
ValueError: cannot match existing table structure for [srch_id] on appending data

我对于处理大型数据集和有限内存方面很陌生,所以我愿意接受有关使用此数据的其他方法的建议。


完整的文档在这里,一些食谱策略在这里

PyTables是面向行的,所以你只能追加行。 逐块读取csv块,然后按照要求添加整个帧,如下所示:

store = pd.HDFStore('file.h5',mode='w')
for chunk in read_csv('file.csv',chunksize=50000):
         store.append('df',chunk)
store.close()

您必须小心,因为在逐块读取不同的dtypes时,可能会出现所得frrame的dtype,例如,您有一个像列这样的整数,直到说出第二个块才具有缺失值。 第一块将该列作为int64 ,而第二块作为float64 。 您可能需要强制dtypes与dtype关键字read_csv ,在这里看到。

这里也有类似的问题。

链接地址: http://www.djcxy.com/p/53539.html

上一篇: Appending Column to Frame of HDF File in Pandas

下一篇: pandas: How do I split text in a column into multiple rows?