Сбросить нулевые значения в начале временного ряда в пандах - PullRequest
0 голосов
/ 07 октября 2019

Я использую Python 3.6. У меня есть такого рода временные ряды с классом 'pandas.core.frame.DataFrame' :

              value
 index
2019-01-01    0
2019-02-01    0
2019-03-01    1577
2019-04-01    1715
2019-05-01    1787
2019-06-01    0
2019-07-01    1787

Я хочу удалить первые две строки, но не одну, соответствующую июню 2019 годаВывод будет:

              value
 index
2019-03-01    1577
2019-04-01    1715
2019-05-01    1787
2019-06-01    0
2019-07-01    1787

Я не могу использовать iterrows () , потому что у меня есть формат временного ряда панд.

1 Ответ

3 голосов
/ 07 октября 2019

Если вам просто нужно удалить эти две строки, вы можете просто сделать df.iloc[2:]

Для обобщенного солютона вы можете использовать cumprod

df.loc[~df.value.eq(0).cumprod().astype(bool)]

           value
2019-03-01   1577
2019-04-01   1715
2019-05-01   1787
2019-06-01      0
2019-07-01   1787

Подробно:

>>> df.value.eq(0).cumprod()

2019-01-01    1
2019-02-01    1
2019-03-01    0
2019-04-01    0
2019-05-01    0
2019-06-01    0
2019-07-01    0

Альтернативное (вероятно, более приятное) решение, предложенное @ user3483203

df.loc[df['value'].ne(0).idxmax():]

           value
2019-03-01   1577
2019-04-01   1715
2019-05-01   1787
2019-06-01      0
2019-07-01   1787
...