разделение / группирование столбца данных pandas - PullRequest
0 голосов
/ 30 января 2019

У меня есть фрейм данных со столбцом, заполненным группами 1 и 0.Как я могу назначить каждой группе последовательный номер, начинающийся с 1?

Я пробовал цикл for по строкам, но мне нужна операция столбца для быстрой производительности.

d = {'col1': [1,1,1,0,0,1,1,0,0,0,1,1]}
df1 = pd.DataFrame(data=d)
df1

col1 0 1 1 1 2 1 3 0 4 0 5 1 6 1 7 0 8 0 9 0 10 1 11 1

Мне нужен следующий вывод:

col1 col2 0 1 1 1 1 1 2 1 1 3 0 2 4 0 2 5 1 3 6 1 3 7 0 4 8 0 4 9 0 4 10 1 5 11 1 5

1 Ответ

0 голосов
/ 30 января 2019

Вы можете сравнить смещенные значения для неравных и добавить кумулятивную сумму на Series.cumsum:

df1['col2'] = df1['col1'].ne(df1['col1'].shift()).cumsum()
print (df1)
    col1  col2
0      1     1
1      1     1
2      1     1
3      0     2
4      0     2
5      1     3
6      1     3
7      0     4
8      0     4
9      0     4
10     1     5
11     1     5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...