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

Arc*_*ast 8 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())
Run Code Online (Sandbox Code Playgroud)

这产生以下结果:

   A  B
0  1  2
Run Code Online (Sandbox Code Playgroud)

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

   A  B
0  1  2
1  2  3
2  3  4
Run Code Online (Sandbox Code Playgroud)

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

duk*_*ody 5

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

head(n=5, compute=True)

数据集的前 n 行

注意,这仅检查第一个分区的前 n 行。

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

然而,第一个分区中的行数预计会大于您在使用时通常想要显示的行数dd.head(),否则使用 dask 不会有回报。这可能不成立的唯一常见情况是n在过滤后获取第一行/元素,如本问题中所述。