Dask DataFrame to_parquet返回字节而不是写入文件

时间:2018-10-05 13:38:43

标签: pandas dataframe parquet dask fastparquet

是否可以将dask / pandas DataFrame写入木地板并返回字节字符串?我知道使用to_parquet()函数无法接受文件路径。也许,您还有其他方法可以做到这一点。如果不可能做这样的事情,添加这样的功能是否有意义?理想情况下,应该是这样的:

parquet_bytes = df.to_parquet() # bytes string is returned

谢谢!

1 个答案:

答案 0 :(得分:0)

已经进行了允许这种事情的工作,但是目前还不是您建议的单行事情。

首先,如果您有可以容纳在内存中的数据,则可以使用fastparquet的var gameData = { x: 0, y: 0 }; setInterval(heartbeat, 1000 /1); function heartbeat() { console.log('====================='); update({x: gameData.x, y: gameData.y}); // doesn't update object update(gameData); // updates object // gameData = update(gameData); } function update(data) { data.x += 1; data.y += 1; console.log('gameData', gameData); // return data; } 方法,并提供一个write()参数。此功能必须是在二进制写入模式下创建类似文件的对象的函数,在这种情况下,您可以使用open=

要直接使用dask进行此操作,可以使用filesystem_spec项目中的the MemoryFileSystem。您需要将类添加到Dask并编写如下:

BytesIO()

完成后,属于类属性的dask.bytes.core._filesystems['memory'] = fsspec.implementations.memory.MemoryFileSystem df.to_parquet('memory://name.parquet') 将包含类似于文件名的键和包含数据的BytesIO对象的值。