У меня dask.dataframe
df2 = dd.read_csv(path, dtype=dtypes, sep=',', error_bad_lines=False)
который разбит на 220 разделов самим dask
print(df2.npartitions)
>>220
Я хотел бы использовать groupby
дважды и сохранить два фрейма данных в файлы
coccurrence_df = df2.groupby(['h1_h2', 'hashtag1','hashtag2','user_id']).count().reset_index()\
.groupby(['h1_h2', 'hashtag1','hashtag2']).message_id.count().reset_index()\
.rename(columns = {"message_id":"coccurrence"})
strong_edges_df = coccurrence_df[coccurrence_df['coccurrence']>1].to_csv(path1, compute=False)
weak_edges_df = coccurrence_df[coccurrence_df['coccurrence']==1].to_csv(path2, compute=False)
dask.compute(strong_edges_df,weak_edges_df)
Почему coccurrence_df
разделен на 1 раздел, когда фрейм данных, из которого он создан, разделен на 220 разделов?
print(coccurrence_df.npartitions)
>>1
Думаю, из-за этого я теряю параллельность, верно? заранее спасибо
Групповые агрегации выполняют параллельные вычисления, но в результате выводятся единичные разделы. Если у вас много групп и вы хотите иметь многораздельный вывод, рассмотрите возможность использования параметра split_out=
для агрегации groupby.
Я не рекомендую это делать, если все работает нормально. Я рекомендую просто использовать значения по умолчанию, пока что-то явно не работает плохо.