删除 Dask 中的空分区

Ian*_*Ian 8 python dask

从 CSV 加载数据时,某些 CSV 无法加载,导致分区为空。我想删除所有空分区,因为某些方法似乎不适用于空分区。我曾尝试重新分区,在那里(例如)repartition(npartitions=10)有效,但大于此值的值仍然会导致空分区。

实现这一目标的最佳方法是什么?谢谢。

小智 10

我发现过滤 Dask 数据框(例如,按日期)通常会导致空分区。如果您在使用带有空分区的数据帧时遇到问题,这里有一个基于 MRocklin 指导的函数来剔除它们:

def cull_empty_partitions(df):
    ll = list(df.map_partitions(len).compute())
    df_delayed = df.to_delayed()
    df_delayed_new = list()
    pempty = None
    for ix, n in enumerate(ll):
        if 0 == n:
            pempty = df.get_partition(ix)
        else:
            df_delayed_new.append(df_delayed[ix])
    if pempty is not None:
        df = dd.from_delayed(df_delayed_new, meta=pempty)
    return df
Run Code Online (Sandbox Code Playgroud)