将dask组导出到csv

时间:2018-08-08 19:52:07

标签: python pandas pandas-groupby dask

我有一个大文件。它有40,955,924条线,大于13GB。我需要能够基于单个字段将该文件分成多个单独的文件,如果我使用的是pd.DataFrame,我会使用以下代码:

for k, v in df.groupby(['id']):
    v.to_csv(k, sep='\t', header=True, index=False)

但是,我得到了错误KeyError: 'Column not found: 0',在Iterate over GroupBy object in dask上有一个针对此特定错误的解决方案,但这需要使用熊猫来存储数据帧的副本,而我不能这样做。在拆分此文件方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您要为此使用apply()

def do_to_csv(df):
    df.to_csv(df.name, sep='\t', header=True, index=False)
    return df

df.groupby(['id']).apply(do_to_csv, meta=df._meta).size.compute()

注意 -组密钥存储在数据帧name中 -我们返回数据框并提供meta;这并不是必须的,但是您将需要在 something 上进行计算,并且很容易知道确切的含义是什么。 -最终输出将是写入的行数。