PySpark Dataframe - перебирать раздел окна - PullRequest
0 голосов
/ 15 сентября 2018

Давайте предположим, что у нас есть такие данные (отсортированные по времени) и мы создали фиктивный столбец для классов в фрейме данных Pyspark:

ID  class   e_TYPE_B    e_TYPE_C    e_TYPE_L    e_TYPE_A    e_TYPE_E    e_TYPE_G
1   G           0           0           0           0           0           1
1   B           1           0           0           0           0           0
1   B           1           0           0           0           0           0
2   E           0           0           0           0           1           0
2   E           0           0           0           0           1           0
2   C           0           1           0           0           0           0
2   C           0           1           0           0           0           0
2   E           0           0           0           0           1           0
2   E           0           0           0           0           1           0
3   L           0           0           1           0           0           0
3   L           0           0           1           0           0           0
3   B           1           0           0           0           0           0
3   E           0           0           0           0           1           0
4   A           0           0           0           1           0           0
4   A           0           0           0           1           0           0
5   B           1           0           0           0           0           0
5   B           1           0           0           0           0           0
5   A           0           0           0           1           0           0
5   A           0           0           0           1           0           0

Теперь я пытаюсь выяснить количество идентификаторов, перемещающихся из одного класса в другой. Он может быть последовательным или иметь некоторые другие классы между ними. Отношение должно быть создано для каждого класса сверху вниз на основе идентификатора.

Например,

  • ID 1 переходит от G к B, затем 1 следует добавить к счетчику G к B,
  • ID 2 переходит от E к C, затем 1 следует добавить к счетчику E к C,
  • ID 2 переходит от C к E, затем 1 следует добавить к счетчику C к E,
  • ID 3 переходит от L к B, затем 1 следует добавить к счетчику L к B,
  • ID 3 переходит от B к E, затем 1 следует добавить к счетчику B к E,
  • Также ID 3 идет от L к E, затем 1 следует добавить к счетчику L к E,
  • ID 4 имеет только один класс, поэтому его следует отбросить

Я думал об использовании операции Window, которая должна разделять по идентификатору, но как перебрать раздел для вычисления числа вышеупомянутых отношений классов - это то, над чем я борюсь.

Пожалуйста, предоставьте решение / фрагмент кода для этого.

Спасибо.

...