【问题标题】:Write pandas DataFrame to HDF in memory buffer将 pandas DataFrame 写入内存缓冲区中的 HDF
【发布时间】:2017-05-21 07:17:42
【问题描述】:

我想在内存中获取一个数据帧作为 hdf。下面的代码导致“AttributeError:'_io.BytesIO'对象没有属性'put'”。我正在使用 python 3.5 和 pandas 0.17

import pandas as pd
import numpy as np
import io

df = pd.DataFrame(np.arange(8).reshape(-1, 2), columns=['a', 'b'])
buf = io.BytesIO()
df.to_hdf(buf, 'some_key')

更新: 正如 UpSampler 指出的那样,“path_or_buf”不能是 io 流(我觉得这很令人困惑,因为 buf 通常可以是 io 流,请参阅to_csv)。除了写入磁盘并将其读回之外,我可以在内存中获取一个作为 hdf 的数据帧吗?

【问题讨论】:

  • 出于好奇 - 你为什么要这样做?
  • 我也遇到了同样的问题,你解决了吗?

标签: python pandas hdf


【解决方案1】:

你的第一个论点 df.to_hdf() 必须是“路径(字符串)或 HDFStore 对象”而不是 io 流。文档:http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.to_hdf.html

【讨论】:

  • 啊,没看到。 to_csv 有一个类似的参数 path_or_buf ,其中 buf 可以是一个 io 流,这就是我感到困惑的原因。
  • CSV 是一个内置模块,而 HDF 是外部的。我不知道 pandas 使用什么来访问 HDF 文件,可能是 pytables 或 pyhdf...
【解决方案2】:

试试这个

df = pd.DataFrame(np.arange(8).reshape(-1, 2), columns=['a', 'b'])
df.to_hdf(path_or_buf='path\to\your\file')

参考pandas.DataFrame.to_hdf

【讨论】:

  • 我希望它在内存中,而不是在磁盘上,并且不希望写入磁盘然后再读回
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2010-10-07
相关资源
最近更新 更多