Преобразование инкрементного массива панд - PullRequest
0 голосов
/ 13 июня 2018

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

[0,0,1,2,3,0,1,0,1,2]

Каждый раз, когда столбец перезапускается с 0, это указывает на новый цикл.Я хочу указать эти итерации цикла с возрастающим массивом.Итак, первое значение - это собственный цикл.Значения со второго по пятое являются частью их собственных циклов и т. Д.

[1,2,2,2,2,3,3,4,4,4]

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я знаю, что вы сказали "столбец", так что я предполагаю, что вы на самом деле используете панд, но простой, хотя и не очень красивый способ со списками (как вы показали в своем вопросе):

l1 = [0,0,1,2,3,0,1,0,1,2]

l2 = [1]
c = 1
for i in range(1, len(l1)):
    if l1[i] != l1[i-1] + 1:
        c += 1
    l2.append(c)
0 голосов
/ 13 июня 2018

Вы можете использовать diff с cumsum

s.diff().le(0).cumsum()+1
Out[300]: 
0    1
1    2
2    2
3    2
4    2
5    3
6    3
7    4
8    4
9    4
dtype: int32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...