是否可以将 dask/pandas DataFrame 写入镶木地板而不是返回字节字符串?to_parquet()
我知道接受文件路径的函数是不可能的。也许,您还有其他方法可以做到这一点。如果不可能做这样的事情,添加这样的功能是否有意义?理想情况下,它应该是这样的:
parquet_bytes = df.to_parquet() # bytes string is returned
谢谢!
是否可以将 dask/pandas DataFrame 写入镶木地板而不是返回字节字符串?to_parquet()
我知道接受文件路径的函数是不可能的。也许,您还有其他方法可以做到这一点。如果不可能做这样的事情,添加这样的功能是否有意义?理想情况下,它应该是这样的:
parquet_bytes = df.to_parquet() # bytes string is returned
谢谢!
已经进行了工作来允许这样的事情,但它目前不像你建议的那样是单行的。
首先,如果你有可以放入内存的数据,你可以使用 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 对象的值。