Подсчитать все вхождения значения Specifi c в кадре данных Dask - PullRequest
1 голос
/ 01 мая 2020

У меня есть фрейм данных dask с тысячами столбцов и строк следующим образом:

pprint(daskdf.head())
   grid     lat      lon  ...  2014-12-29  2014-12-30  2014-12-31
0     0  48.125 -124.625  ...         0.0         0.0  -17.034216
1     0  48.625 -124.625  ...         0.0         0.0  -19.904214
4     0  42.375 -124.375  ...         0.0         0.0   -8.380443
5     0  42.625 -124.375  ...         0.0         0.0   -8.796803
6     0  42.875 -124.375  ...         0.0         0.0   -7.683688

Я хочу подсчитать все вхождения во всем фрейме данных, где появляется определенное значение. В pandas это можно сделать следующим образом:

pddf[pddf==500].count().sum()

Я знаю, что вы не можете перевести все pandas функции / синтаксис с помощью dask, но как мне это сделать с помощью dask dataframe? Я попытался сделать:

daskdf[daskdf==500].count().sum().compute()

, но это привело к ошибке "Не реализовано".

1 Ответ

1 голос
/ 01 мая 2020

Как и во многих случаях, когда есть строковый метод pandas, который еще явно не реализован в dask, вы можете использовать map_partitions. В этом случае это может выглядеть так:

ppdf.map_partitions(lambda df: df[df==500].count()).sum().compute()

Вы можете поэкспериментировать с тем, помогает ли также выполнение .sum() в лямбде (это приведет к меньшим посредникам) и каков аргумент meta= для map_partition должен выглядеть так.

...