从`dask.DataFrame`切了几行

问题描述 投票:2回答:2

通常情况下,用大dask.DataFrame工作时,那也只能是抢在其上测试所有后续操作几行是有用的。

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

  • 我希望再使用head达到相同的(因为支持该命令),但返回普通的熊猫数据帧。
  • 我也试过df[:1000],它执行,但会产生从你从熊猫期望不同的输出。

有没有办法抓住从dask.DataFrame第1000行?

dask
2个回答
5
投票

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

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

如果你想保持相同数目的分区,你可能会考虑样本

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不留行计数每个分区,这样的具体问题,“给我1000行”结束是令人惊讶的很难回答。这是一个更容易回答诸如“给我所有的数据在一月份”或“给我的第一个分区”问题


0
投票

您可能会重新分区您的初始数据框到分区任意数量。如果你想1000行切片:

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

然后就打电话给你希望的分区:

first_1000_rows = parted_df.partitions[0]

需要注意的是,除非你最初的数据帧的行数是1000多,你就不会得到完全1000行。

© www.soinside.com 2019 - 2024. All rights reserved.