使用 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

【讨论】:

对不起,我编辑了我的帖子,dasktail 实现的问题在于,根据文档“警告,仅检查最后一个分区的最后 n 行。”。所以我只能使用最后一个分区,我想使用多个分区。 不,目前不支持。您必须提出问题,或者更好的是,通过拉取请求提供修复。 好的,谢谢您的回答!不确定能否提供拉取请求,但我会看看。

以上是关于使用 dask.dataframe 从 CSV 文件中按分区读取尾部的主要内容,如果未能解决你的问题,请参考以下文章

如何将压缩(gz)CSV文件读入dask Dataframe?

如何从标准输入读取 dask 数据帧?

将 Dask 分区写入单个文件

如何将 Dask.DataFrame 转换为 pd.DataFrame?

如何为 dask.dataframe 指定元数据

python dask DataFrame,支持(可简单并行化)行吗?