2015-08-18 9 views
7

У меня есть номер Pandas Серия с 601 строками, индексированными по дате, как показано ниже. Значения равны нулю до точки, после которой все значения не равны нулю. Эта точка зависит от каждой серии, но мне хотелось бы удалить все строки, где значение равно нулю, сохраняя целостность индекса даты.Удалите строки нулей из серии Pandas

Name: users, dtype: float64 dates 
2015-08-17 14:29:59-04:00 18 
2015-08-16 14:29:59-04:00  3 
2015-08-15 14:29:59-04:00 11 
2015-08-14 14:29:59-04:00 12 
2015-08-13 14:29:59-04:00  8 
2015-08-12 14:29:59-04:00 10 
2015-08-11 14:29:59-04:00  6 
2015-08-10 14:29:59-04:00  6 
2015-08-09 14:29:59-04:00  7 
2015-08-08 14:29:59-04:00  7 
2015-08-07 14:29:59-04:00 13 
2015-08-06 14:29:59-04:00 16 
2015-08-05 14:29:59-04:00 12 
2015-08-04 14:29:59-04:00 14 
2015-08-03 14:29:59-04:00  5 
2015-08-02 14:29:59-04:00  5 
2015-08-01 14:29:59-04:00  8 
2015-07-31 14:29:59-04:00  6 
2015-07-30 14:29:59-04:00  7 
2015-07-29 14:29:59-04:00  9 
2015-07-28 14:29:59-04:00  7 
2015-07-27 14:29:59-04:00  5 
2015-07-26 14:29:59-04:00  4 
2015-07-25 14:29:59-04:00  8 
2015-07-24 14:29:59-04:00  8 
2015-07-23 14:29:59-04:00  8 
2015-07-22 14:29:59-04:00  9 
2015-07-21 14:29:59-04:00  5 
2015-07-20 14:29:59-04:00  7 
2015-07-19 14:29:59-04:00  6 
          .. 
2014-01-23 13:29:59-05:00  0 
2014-01-22 13:29:59-05:00  0 
2014-01-21 13:29:59-05:00  0 
2014-01-20 13:29:59-05:00  0 
2014-01-19 13:29:59-05:00  0 
2014-01-18 13:29:59-05:00  0 
2014-01-17 13:29:59-05:00  0 
2014-01-16 13:29:59-05:00  0 
2014-01-15 13:29:59-05:00  0 
2014-01-14 13:29:59-05:00  0 
2014-01-13 13:29:59-05:00  0 
2014-01-12 13:29:59-05:00  0 
2014-01-11 13:29:59-05:00  0 
2014-01-10 13:29:59-05:00  0 
2014-01-09 13:29:59-05:00  0 
2014-01-08 13:29:59-05:00  0 
2014-01-07 13:29:59-05:00  0 
2014-01-06 13:29:59-05:00  0 
2014-01-05 13:29:59-05:00  0 
2014-01-04 13:29:59-05:00  0 
2014-01-03 13:29:59-05:00  0 
2014-01-02 13:29:59-05:00  0 
2014-01-01 13:29:59-05:00  0 
2013-12-31 13:29:59-05:00  0 
2013-12-30 13:29:59-05:00  0 
2013-12-29 13:29:59-05:00  0 
2013-12-28 13:29:59-05:00  0 
2013-12-27 13:29:59-05:00  0 
2013-12-26 13:29:59-05:00  0 
2013-12-25 13:29:59-05:00  0 
+1

Одним из ключевых моментов панд является то, что она в значительной степени * всегда * сохраняет индекс. На самом деле вам нужно перепрыгнуть через несколько обручей, чтобы заставить его забыть индекс. – TheBlackCat

ответ

11

Просто фильтровать их:

users[users!=0] 

Это позволит сохранить ваш индекс также

Или

users[users > 0] 

если это положительные значения вы после:

In [38]: 
s[s>0] 

Out[38]: 
2015-08-17 18:29:59 18 
2015-08-16 18:29:59  3 
2015-08-15 18:29:59 11 
2015-08-14 18:29:59 12 
2015-08-13 18:29:59  8 
2015-08-12 18:29:59 10 
2015-08-11 18:29:59  6 
2015-08-10 18:29:59  6 
2015-08-09 18:29:59  7 
2015-08-08 18:29:59  7 
2015-08-07 18:29:59 13 
2015-08-06 18:29:59 16 
2015-08-05 18:29:59 12 
2015-08-04 18:29:59 14 
2015-08-03 18:29:59  5 
2015-08-02 18:29:59  5 
2015-08-01 18:29:59  8 
2015-07-31 18:29:59  6 
2015-07-30 18:29:59  7 
2015-07-29 18:29:59  9 
2015-07-28 18:29:59  7 
2015-07-27 18:29:59  5 
2015-07-26 18:29:59  4 
2015-07-25 18:29:59  8 
2015-07-24 18:29:59  8 
2015-07-23 18:29:59  8 
2015-07-22 18:29:59  9 
2015-07-21 18:29:59  5 
2015-07-20 18:29:59  7 
2015-07-19 18:29:59  6 
Name: 1, dtype: int64 
3

если ds вы: DataSeries: ds!=0 возвращает булев вектор строк со значениями, отличными от нуля.

ds[ds!=0] являются строками, с индексом сохраняется

Обратите внимание, что пропущенные значения (NaN) не будут фильтроваться.

Для фильтрации и используйте: ds[(ds!=0)&(pd.isnull(ds))]

Смежные вопросы