use*_*692 6 python pandas dask python-xarray
我有一个计算,希望将pandas数据帧作为输入.我想对存储在netCDF文件中的数据运行此计算,该文件扩展到51GB - 目前我一直在xarray.open_dataset使用块打开文件(我的理解是这个打开的文件实际上是一个dask数组,所以只加载块一次将数据存入内存).但是,我似乎无法利用这种延迟加载,因为我必须将xarray数据转换为pandas数据帧才能运行我的计算 - 我的理解是,此时所有数据都被加载进入记忆(这是坏事).
所以我想长话短说,我的问题是:如何从一个xarray数据集到一个pandas数据帧,而没有任何将我的整个数据加载到内存中的中间步骤?我已经看过dask工作pandas.read_csv,我看到它与xarray一起使用,但我不确定如何将已经打开的netCDF xarray数据集转换为块中的pandas数据帧.
谢谢,抱歉这个模糊的问题!
这是一个很好的问题。这应该是可行的,但我不太确定正确的方法是什么。
理想情况下,我们可以简单地实现一个xarray.Dataset.to_dask_dataframe()方法。但是这里有几个挑战——最大的一个是 dask 目前不支持带有 MultiIndex 的数据帧。
或者,你可能想建立的名单dask.Delayed持物pandas.DataFrames对的每个块xarray.Dataset。为此,如果 xarray 有类似 dask.array 的to_delayed方法将数据集转换为延迟数据集的数组,然后您可以懒惰地将其转换为 DataFrame 对象并进行计算,那就太好了。
我鼓励您在 dask 或 xarray GitHub 页面上打开一个问题进行讨论,特别是如果您可能对贡献代码感兴趣。编辑:您可以在此处找到该问题。