0

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

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

谢谢!

4

1 回答 1

0

已经进行了工作来允许这样的事情,但它目前不像你建议的那样是单行的。

首先,如果你有可以放入内存的数据,你可以使用 fastparquet 的write()方法,并提供一个open=参数。这必须是一个在二进制写入模式下创建类似文件的对象的函数,在您的情况下 aBytesIO()会这样做。

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

dask.bytes.core._filesystems['memory']  = fsspec.implementations.memory.MemoryFileSystem
df.to_parquet('memory://name.parquet')

完成后MemoryFileSystem.store,作为类属性的 将包含类似于文件名的键和包含数据的 BytesIO 对象的值。

于 2018-10-05T14:01:05.020 回答