使用 dask.dataframe 从 CSV 文件中按分区读取尾部
Posted
技术标签:
【中文标题】使用 dask.dataframe 从 CSV 文件中按分区读取尾部【英文标题】:Read tail by partition from CSV file with dask.dataframe 【发布时间】:2018-08-22 18:30:29 【问题描述】:使用 Dash,我们可以轻松读取 CSV 文件并使用 head
获取第一行,即使在多个分区中也是如此。
import dask.dataframe as dd
df = dd.read_csv('data.csv').head(n=100, npartitions=2)
但我想在多个分区上读取 CSV 文件的最后几行,如下所示:
import dask.dataframe as dd
df = dd.read_csv('data.csv').tail(n=100, npartitions=2)
Dask data.frame 似乎不支持tail
方法上的分区。
在pandas
中,我可以使用skiprows
管理它,但在Dask
中似乎没有此选项。
【问题讨论】:
既然这个任务不占用大量内存(因此不需要dask
),为什么不使用pandas
?
我的管道基本上使用dask
,但即使我阅读了数百万行(我有一个巨大的 csv 文件......),它也可能是一种选择。
【参考方案1】:
您似乎已经回答了自己的问题。 tail 方法存在
import dask.dataframe as dd
df = dd.read_csv('data.csv').tail(n=100)
见Dataframe API
【讨论】:
对不起,我编辑了我的帖子,dask
的 tail
实现的问题在于,根据文档“警告,仅检查最后一个分区的最后 n 行。”。所以我只能使用最后一个分区,我想使用多个分区。
不,目前不支持。您必须提出问题,或者更好的是,通过拉取请求提供修复。
好的,谢谢您的回答!不确定能否提供拉取请求,但我会看看。以上是关于使用 dask.dataframe 从 CSV 文件中按分区读取尾部的主要内容,如果未能解决你的问题,请参考以下文章
如何将压缩(gz)CSV文件读入dask Dataframe?