将 dask dataframe 保存到 csv 并在不计算两次的情况下找出其长度

Save dask dataframe to csv and find out its length without computing twice

说,我有一些 dask 数据框。我想用它做一些操作,而不是保存到 csv 并打印它的长度。

据我了解,以下代码将使 dask 计算 df 两次,对吗?

df = dd.read_csv('path/to/file', dtype=some_dtypes)
#some operations...
df.to_csv("path/to/out/*")
print(len(df))

可以避免计算两次吗?

更新。 这就是我使用@mdurant 的解决方案时发生的情况

但实际上行数几乎减少了 6 倍

是的,你可以做到这一点。可选关键字 compute=to_csv 用于制作写入光盘过程的惰性版本,而 df.size 类似于 len(),但也是惰性计算的。

import dask
futs = df.to_csv("path/to/out/*", compute=False)
_, l = dask.compute(futs, df.size)

这样会注意到写入和长度所需的共同工作,而不必读取数据两次。