gpt4 book ai didi

python - 在 Pandas 中将列附加到 HDF 文件的框架

转载 作者:太空狗 更新时间:2023-10-29 19:33:43 26 4
gpt4 key购买 nike

我正在处理 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

我是处理大型数据集和有限内存的新手,所以我愿意听取关于处理这些数据的替代方法的建议。

最佳答案

完整的文档是 here , 和一些食谱策略 here

PyTables 是面向行的,因此您只能追加行。逐 block 读取 csv,然后边读边追加整个帧,如下所示:

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

您必须小心一点,因为当逐 block 读取时,结果帧的数据类型可能具有不同的数据类型,例如你有一个类似整数的列,在说第二个 block 之前没有缺失值。第一个 block 将该列作为 int64,而第二个 block 作为 float64。您可能需要使用 dtype 关键字强制 dtypes 到 read_csv,参见 here .

here也是类似的问题。

关于python - 在 Pandas 中将列附加到 HDF 文件的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20428355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com