通常情况下,用大dask.DataFrame
工作时,那也只能是抢在其上测试所有后续操作几行是有用的。
目前,据Slicing a Dask Dataframe,这是不支持的。
head
达到相同的(因为支持该命令),但返回普通的熊猫数据帧。df[:1000]
,它执行,但会产生从你从熊猫期望不同的输出。有没有办法抓住从dask.DataFrame
第1000行?
如果您的数据帧有sensibly partitioned index那么我建议使用.loc
small = big.loc['2000':'2005']
如果你想保持相同数目的分区,你可能会考虑样本
small = big.sample(frac=0.01)
如果你只想一个分区,你可以尝试get_partition
small = big.get_partition(0)
您也可以随时使用to_delayed
和from_delayed
来构建自己的定制解决方案。 http://dask.pydata.org/en/latest/dataframe-create.html#dask-delayed
更一般地,Dask.dataframe不留行计数每个分区,这样的具体问题,“给我1000行”结束是令人惊讶的很难回答。这是一个更容易回答诸如“给我所有的数据在一月份”或“给我的第一个分区”问题
您可能会重新分区您的初始数据框到分区任意数量。如果你想1000行切片:
npart = round(len(df)/1000)
parted_df = df.repartition(npartitions=npart)
然后就打电话给你希望的分区:
first_1000_rows = parted_df.partitions[0]
需要注意的是,除非你最初的数据帧的行数是1000多,你就不会得到完全1000行。