Добавить столбец count в dataframe, который подсчитывает, когда изменяется другая строка - PullRequest
0 голосов
/ 28 июня 2018

У меня есть фрейм данных с таким столбцом:

      x
0     1
1     1
2     0
3     1
4     0
5     0
6     0
7     1
8     1
9     1

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

      x     y
0     1     0
1     1     0
2     0     1
3     1     2
4     0     3
5     0     3
6     0     3
7     1     4
8     1     4
9     1     4

Я не могу найти самый быстрый способ сделать это без зацикливания. Мне также все равно, если y начинается с 0 или 1. Я уверен, что у панд есть что-то врожденное, что я могу использовать. Вы можете помочь?

PS. причина, по которой мне нужно сделать этот столбец y, заключается в возможности группировать строки по каждому числу, если есть способ по существу выполнить то же самое, не создавая его, это тоже сработало бы.

Ответы [ 2 ]

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

с массивами Numpy

Примечание : Это также обобщает тип object dtype, поскольку мы оцениваем равенство.

df.assign(y=np.append(False, df.x.values[1:] != df.x.values[:-1]).cumsum())

   x  y
0  1  0
1  1  0
2  0  1
3  1  2
4  0  3
5  0  3
6  0  3
7  1  4
8  1  4
9  1  4
0 голосов
/ 28 июня 2018

После diff вы можете подать cumsum

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