У меня есть такая запись.
A B
1 2018-12-25
2 2019-01-15
1 2019-01-20
3 2018-01-01
2 2019-01-01
4 2018-04-09
3 2018-11-08
1 2018-03-20
То, что я хочу получить, это что-то вроде этого.Первый шаг, упорядочение внутри группы в порядке возрастания.(Не нужно заказывать по A)
A B
1 2018-03-20
1 2018-12-25
1 2019-01-20
3 2018-01-01
3 2018-11-08
2 2019-01-01
2 2019-01-15
4 2018-04-09
Второй шаг, получить разницу во времени между последовательными строками в группе.
A B C
1 2018-03-20 NaN
1 2018-12-25 280
1 2019-01-20 26
3 2018-01-01 NaN
3 2018-11-08 311
2 2019-01-01 NaN
2 2019-01-15 14
4 2018-04-09 NaN
Третий шаг, получить скользящее среднее значение C с размером окна 2. (Поскольку в качестве примера я указал только очень небольшое количество строк, просто выберите размер 2 для удобства)
A B C moving_avg
1 2018-03-20 NaN NaN
1 2018-12-25 280 280
1 2019-01-20 26 153
3 2018-01-01 NaN NaN
3 2018-11-08 311 311
2 2019-01-01 NaN NaN
2 2019-01-15 14 14
4 2018-04-09 NaN NaN
Решение на самом деле не нужно генерировать столбец C, если функция Windows может обработать этот случай.Я перечисляю каждый шаг, чтобы убедиться, что вы можете получить четкое представление о том, в чем проблема.
Результирующий набор будет выглядеть следующим образом
A B moving_avg
1 2018-03-20 NaN
1 2018-12-25 280
1 2019-01-20 153
3 2018-01-01 NaN
3 2018-11-08 311
2 2019-01-01 NaN
2 2019-01-15 14
4 2018-04-09 NaN
ВНИМАНИЕ: Это на pyspark и использует фрейм данных.Не на Python с использованием Pandas.
Большое спасибо!