从 `dask.DataFrame` 中切出几行

Slicing out a few rows from a `dask.DataFrame`

通常,在处理大型 dask.DataFrame 时,只抓取几行来测试所有后续操作会很有用。

目前,根据 Slicing a Dask Dataframe,这是不受支持的。

有没有办法从 dask.DataFrame 中获取前 1000 行?

如果您的数据框有 sensibly partitioned index 那么我建议使用 .loc

small = big.loc['2000':'2005']

如果你想保持相同数量的分区,你可以考虑sample

small = big.sample(frac=0.01)

如果你只想要一个分区,你可以尝试get_partition

small = big.get_partition(0)

您也可以始终使用 to_delayedfrom_delayed 来构建您自己的自定义解决方案。 http://dask.pydata.org/en/latest/dataframe-create.html#dask-delayed

更一般地说,Dask.dataframe 不会为每个分区保留 row-counts,因此 "give me 1000 rows" 这个具体问题最终出奇地难以回答。回答 "give me all the data in January" 或 "give me the first partition"

这样的问题要容易得多

您可以将初始 DataFrame 重新分区为任意数量的分区。如果您想要 1000 行的切片:

npart = round(len(df)/1000)
parted_df = df.repartition(npartitions=npart)

然后调用您想要的分区:

first_1000_rows = parted_df.partitions[0]

请注意,除非初始 DataFrame 中的行数是 1000 的倍数,否则您不会正好 1000 行。