【发布时间】:2018-02-28 19:19:21
【问题描述】:
我有兴趣将自定义对象流式传输到 pandas 数据框。根据the documentation,可以使用任何具有 read() 方法的对象。但是,即使在实现此功能后,我仍然会收到此错误:
ValueError:无效的文件路径或缓冲区对象类型:
这是对象的简单版本,以及我如何称呼它:
class DataFile(object):
def __init__(self, files):
self.files = files
def read(self):
for file_name in self.files:
with open(file_name, 'r') as file:
for line in file:
yield line
import pandas as pd
hours = ['file1.csv', 'file2.csv', 'file3.csv']
data = DataFile(hours)
df = pd.read_csv(data)
是我遗漏了什么,还是无法在 Pandas 中使用自定义生成器?当我调用 read() 方法时,它工作得很好。
编辑: 我想使用自定义对象而不是将数据帧连接在一起的原因是看看是否可以减少内存使用量。我过去使用过gensim 库,它使使用自定义数据对象变得非常容易,所以我希望能找到一些类似的方法。
【问题讨论】:
-
即使这按记录工作,我怀疑您的
read方法是否有效,因为通常,read(x)从缓冲区读取 x 个字节。相反,您的read方法会返回一个生成器对象。
标签: python python-3.x pandas