【发布时间】:2013-12-24 01:36:58
【问题描述】:
我正在处理 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
我是处理大型数据集和有限内存的新手,因此我愿意接受有关处理这些数据的替代方法的建议。
【问题讨论】:
-
在 2019 年,您可以使用 Dask 来延迟加载数据。