将dask数据帧保存到csv并找出其长度,而无需计算两次

时间:2018-07-30 12:51:36

标签: python dataframe dask

说,我有一些模糊的数据框。我想对它进行一些操作,而不是保存到csv并打印其len。

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

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

有可能避免两次计算?

upd。 这就是我使用@mdurant解决方案时发生的情况 enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:5)

是的,您可以实现这一目标。 compute=to_csv的可选关键字是写盘过程的惰性版本,df.size类似于len(),但也是懒惰的。< / p>

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

这将注意到写入和长度所需的常见工作,而不必两次读取数据。