2015-08-18 18 views
7

Mam numer Pandas Seria z 601 wierszy indeksowane według daty, jak widać poniżej. Wartości są zerowe aż do punktu, po którym wszystkie wartości są niezerowe. Ten punkt różni się w przypadku każdej serii, ale chciałbym, aby usunąć wszystkie wiersze, w których wartość wynosi zero, zachowując integralność indeksu daty.Usuń wiersze zer z serii 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

Jednym z kluczowych punktów pand jest to, że prawie zawsze * * zachowuje indeks. W rzeczywistości musisz przeskoczyć przez obręcze, aby zapomnieć o indeksie. – TheBlackCat

Odpowiedz

11

Wystarczy je odfiltrować:

users[users!=0] 

ten zachowa swój indeks także

Albo

users[users > 0] 

czy to pozytywne wartości jesteś po:

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

jeśli ds to ty DataSeries: ds!=0 zwróci wektor boolowski wierszy z wartościami innymi niż zero.

ds[ds!=0] są rzędy, przy czym wskaźnik zachowane

zauważyć, że wartości brakujące (NaN) nie są filtrowane.

Aby filtrować zarówno użyć: ds[(ds!=0)&(pd.isnull(ds))]

Powiązane problemy