Pandas - номер строки с последнего значения больше 0 - PullRequest
4 голосов
/ 09 июля 2019

Допустим, у меня есть серия Панд примерно так:

import pandas as pd

pd.Series([1, 0, 0, 1, 0, 0, 0], name='series')

Как бы я добавил столбец с количеством строк, начиная с последнего числа> 0, например:

pd.DataFrame({
    'series': [1, 0, 0, 1, 0, 0, 0],
    'row_num': [0, 1, 2, 0, 1, 2, 3]
})

Ответы [ 2 ]

6 голосов
/ 09 июля 2019

Попробуйте это:

s.groupby(s.cumsum()).cumcount()

Вывод:

0    0
1    1
2    2
3    0
4    1
5    2
6    3
dtype: int64
1 голос
/ 09 июля 2019

Numpy

  • Найдите места, где серия / массив больше 0
  • Рассчитайте разницу от одного места к следующему
  • Вычесть эти значения из последовательности

i = np.flatnonzero(s)
n = len(s)
delta = np.diff(np.append(i, n))
r = np.arange(n)
r - r[i].repeat(delta)

array([0, 1, 2, 0, 1, 2, 3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...