Dask эквивалент лидерства pyspark и функции задержки - PullRequest
0 голосов
/ 08 декабря 2018

Можно ли получить в dask кадре данных аналогичные результаты, которые можно получить с помощью оконных функций lag или lead при pyspark?Я хочу преобразовать следующий фрейм данных

    +-------+
    | value |
    +-------+
    | 1     |
    | 2     |
    | 3     |
    +-------+

в нечто подобное

    +-------+------------+------------+
    | value | prev_value | next_value |
    +-------+------------+------------+
    | 1     | NaN        | 2          |
    | 2     | 1          | 3          |
    | 3     | 2          | NaN        |
    +-------+------------+------------+

1 Ответ

0 голосов
/ 10 декабря 2018

Dask dataframe просто отражает интерфейс панд.В этом случае вам нужен метод shift :

In [3]: import pandas as pd

In [4]: df = pd.DataFrame({'a': range(5)})

In [5]: import dask.dataframe as dd

In [6]: ddf = dd.from_pandas(df, npartitions=2)

In [7]: out = ddf.assign(prev_a=ddf.a.shift(1), next_a=ddf.a.shift(-1))

In [8]: out.compute()
Out[8]:
   a  prev_a  next_a
0  0     NaN     1.0
1  1     0.0     2.0
2  2     1.0     3.0
3  3     2.0     4.0
4  4     3.0     NaN

Однако, если вы пытаетесь выровнять строки для выполнения какого-либо оконного или скользящего вычисления, вас может заинтересоватьв map_overlap , что было бы более производительным.

...