Добавляйте уникальный идентификатор в новый столбец, пока не будет выполнено условие для другого столбца. - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть кадр данных dask с npartition = 8, вот снимок данных:

      id1    id2     Page_nbr    record_type 
      St1    Sc1     3             START
      Sc1    St1     5              ADD      
      Sc1    St1     9             OTHER 
      Sc2    St2     34            START
      Sc2    St2     45           DURATION  
      Sc2    St2     65             END
      Sc3    Sc3     4              START  

Я хочу добавить столбец после record_type и добавить уникальный group_id на основе условия типа записитак что до следующего record_type = START добавьте тот же уникальный group_id, вывод будет выглядеть следующим образом:

      id1    id2     Page_nbr    record_type     group_id
      St1    Sc1     3             START             1
      Sc1    St1     5              ADD              1    
      Sc1    St1     9             OTHER             1 
      Sc2    St2     34            START             2
      Sc2    St2     45           DURATION           2
      Sc2    St2     65             END              2
      Sc3    Sc3     4              START            3 

group_id может быть любым уникальным числом.Поскольку размер данных очень велик, итерации по строкам могут быть не лучшим вариантом.Хотите знать, есть ли какой-нибудь питонический способ сделать это?

1 Ответ

0 голосов
/ 26 февраля 2019

Возьмите столбец «record_type», сравните с «START», а затем вычислите cumsum:

ddf['group_id'] = ddf['record_type'].eq('START').cumsum()
ddf.compute()

   id1  id2  Page_nbr record_type  group_id
0  St1  Sc1         3       START         1
1  Sc1  St1         5         ADD         1
2  Sc1  St1         9       OTHER         1
3  Sc2  St2        34       START         2
4  Sc2  St2        45    DURATION         2
5  Sc2  St2        65         END         2
6  Sc3  Sc3         4       START         3
...