使用 odo 转换 pandas hdfstore 时维护数据列
Maintain data columns when converting pandas hdfstore with odo
我正在使用 blaze 项目中的 odo 合并多个 pandas hdfstore 表,遵循这个问题中的建议:
这些商店在设计上具有相同的列和不重叠的索引以及几百万行。单个文件可能适合内存,但总的组合文件可能不会。
有什么方法可以保留创建 hdfstore 时使用的设置?我松开数据列和压缩设置。
我尝试了 odo(part, whole, datacolumns=['col1','col2'])
,但没有成功。
或者,如果您对替代方法有任何建议,我们将不胜感激。我当然可以手动执行此操作,但随后我必须管理分块大小,以免 运行 内存不足。
odo
不支持传播 compression
and/or data_columns
ATM。两者都很容易添加,我创建了一个问题 here
您可以在 pandas
中这样做:
In [1]: df1 = DataFrame({'A' : np.arange(5), 'B' : np.random.randn(5)})
In [2]: df2 = DataFrame({'A' : np.arange(5)+10, 'B' : np.random.randn(5)})
In [3]: df1.to_hdf('test1.h5','df',mode='w',format='table',data_columns=['A'])
In [4]: df2.to_hdf('test2.h5','df',mode='w',format='table',data_columns=['A'])
遍历输入文件。 Chunk read/write 到最终存储。请注意,您还必须在此处指定 data_columns
。
In [7]: for f in ['test1.h5','test2.h5']:
...: for df in pd.read_hdf(f,'df',chunksize=2):
...: df.to_hdf('test3.h5','df',format='table',data_columns=['A'])
...:
In [8]: with pd.HDFStore('test3.h5') as store:
print store
...:
<class 'pandas.io.pytables.HDFStore'>
File path: test3.h5
/df frame_table (typ->appendable,nrows->1,ncols->2,indexers->[index],dc->[A])
我正在使用 blaze 项目中的 odo 合并多个 pandas hdfstore 表,遵循这个问题中的建议:
这些商店在设计上具有相同的列和不重叠的索引以及几百万行。单个文件可能适合内存,但总的组合文件可能不会。
有什么方法可以保留创建 hdfstore 时使用的设置?我松开数据列和压缩设置。
我尝试了 odo(part, whole, datacolumns=['col1','col2'])
,但没有成功。
或者,如果您对替代方法有任何建议,我们将不胜感激。我当然可以手动执行此操作,但随后我必须管理分块大小,以免 运行 内存不足。
odo
不支持传播 compression
and/or data_columns
ATM。两者都很容易添加,我创建了一个问题 here
您可以在 pandas
中这样做:
In [1]: df1 = DataFrame({'A' : np.arange(5), 'B' : np.random.randn(5)})
In [2]: df2 = DataFrame({'A' : np.arange(5)+10, 'B' : np.random.randn(5)})
In [3]: df1.to_hdf('test1.h5','df',mode='w',format='table',data_columns=['A'])
In [4]: df2.to_hdf('test2.h5','df',mode='w',format='table',data_columns=['A'])
遍历输入文件。 Chunk read/write 到最终存储。请注意,您还必须在此处指定 data_columns
。
In [7]: for f in ['test1.h5','test2.h5']:
...: for df in pd.read_hdf(f,'df',chunksize=2):
...: df.to_hdf('test3.h5','df',format='table',data_columns=['A'])
...:
In [8]: with pd.HDFStore('test3.h5') as store:
print store
...:
<class 'pandas.io.pytables.HDFStore'>
File path: test3.h5
/df frame_table (typ->appendable,nrows->1,ncols->2,indexers->[index],dc->[A])