npartition会影响dask.dataframe.head()的结果吗?

时间:2016-07-09 03:58:07

标签: python pandas dask

运行以下代码时,dask.dataframe.head()的结果取决于npartitions:

import dask.dataframe as dd
import pandas as pd
df = pd.DataFrame({'A': [1,2,3], 'B': [2,3,4]})
ddf = dd.from_pandas(df, npartitions = 3)
print(ddf.head())

这产生以下结果:

   A  B
0  1  2

但是,当我将npartitions设置为1或2时,我得到了预期的结果:

   A  B
0  1  2
1  2  3
2  3  4

似乎重要的是,npartition低于数据帧的长度。这是有意的吗?在将数据转换为dask框架之前,我是否总是必须检查数据的大小?

1 个答案:

答案 0 :(得分:4)

根据文档dd.head()仅检查第一个分区:

  

head(n=5, compute=True)

     

数据集的前n行

     

警告,这只会检查第一个分区的前n行。

所以答案是肯定的,dd.head()会受到dask数据框中有多少分区的影响。

然而第一个分区中的行数预计会大于使用dd.head()时通常要显示的行数 - 否则使用dask不应该清偿。唯一常见的情况是,在过滤后获取第一个n行/元素时,如this question中所述。