【问题标题】:Filtering chunks of a dataframe in parallel using Dask使用 Dask 并行过滤数据帧的块
【发布时间】:2020-09-07 07:52:24
【问题描述】:

我有一个用例,我需要过滤属于某个因子组的数据框片段。

例如,假设数据框看起来像这样:

index    col1    col2
0        A       5
1        A       10
2        B       5
3        B       8
4        C       0
... and so on

我需要做的是获取df[df['col1'] == 'A'] 所在的数据块,然后应用另一个函数来测试其他条件下的行并进一步过滤数据。

所以我的循环目前看起来像这样:

df_chunks = [df[df['col1'] == x] for x in col1_unique_values]
outputs = []
for df_chunk in df_chunks:
    output = do_my_custom_filter(df_chunk)
    outputs.append(output)

有没有办法用 Dask 替换最后一个 for 循环?我尝试了多处理路由,发现它很难调试。

为此目的的任何设计模式都会非常有帮助!

【问题讨论】:

    标签: python parallel-processing dask


    【解决方案1】:

    看起来你的计算可能是令人尴尬的并行。如果是这样,您可以编写一个使用和生成 Pandas 数据帧的函数,然后调用 df.map_partitions(your_function)

    或者,如果您希望将块合并在一起,那么您可能需要查看 groupby-apply,如下所示:

    df.groupby("col1").apply(my_custom_function)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2018-03-04
      • 2017-10-21
      • 1970-01-01
      相关资源
      最近更新 更多