Как назначить индекс последнего изменения в столбце для каждой строки? - PullRequest
0 голосов
/ 04 сентября 2018

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

In[160]: df.tail(10)
Out[160]: 
       alert   value
525590     0  46.374
525591     0  46.303
525592     3  46.310
525593     0  46.300
525594     0  46.400
525595     3  46.300
525596     0  46.310
525597     1  46.303
525598     0  46.387
525599     0  46.400

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

In[160]: ???.tail(10)
Out[160]: 
       alert   value  change
525590     0  46.374  525585
525591     0  46.303  525585
525592     3  46.310  525592
525593     0  46.300  525592
525594     0  46.400  525592
525595     3  46.300  525595
525596     0  46.310  525595
525597     1  46.303  525597
525598     0  46.387  525597
525599     0  46.400  525597

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

1 Ответ

0 голосов
/ 04 сентября 2018

Можно использовать ffill

g = df.alert.ne(0)
df.loc[g[g].index, 'change'] = g[g].index
df.ffill()

        alert   value   change
525590  0       46.374  NaN
525591  0       46.303  NaN
525592  3       46.310  525592.0
525593  0       46.300  525592.0
525594  0       46.400  525592.0
525595  3       46.300  525595.0
525596  0       46.310  525595.0
525597  1       46.303  525597.0
525598  0       46.387  525597.0
525599  0       46.400  525597.0

Обратите внимание, что значения NaN выросли, потому что я только что использовал последние 10 пунктов. Должно быть в порядке при запуске всего набора данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...