2015-08-18 7 views
7

Ich habe eine Nummer Pandas Serie mit 601 Zeilen nach Datum indiziert wie unten zu sehen. Die Werte sind Null bis zu einem Punkt, nach dem alle Werte nicht Null sind. Dieser Punkt variiert mit jeder Serie, aber ich möchte eine Möglichkeit, alle Zeilen zu entfernen, bei denen der Wert Null ist, während die Integrität des Datumsindex beibehalten wird.Entfernen Sie Reihen von Nullen aus einer Pandas-Serie

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

Einer der wichtigsten Punkte der Pandas ist, dass es viel ziemlich * immer * den Index bewahrt. In der Tat müssen Sie durch einige Reifen springen, um den Index zu vergessen. – TheBlackCat

Antwort

11

sie einfach herausfiltern:

users[users!=0] 

Dies wird

Oder

Zeige auch
users[users > 0] 

bewahren, wenn es positive Werte ist Sie nach:

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

Wenn ds ist Sie DataSeries: ds!=0 wird einen booleschen Vektor von Zeilen mit Werten ungleich Null zurückgeben.

ds[ds!=0] sind die Zeilen, mit dem Index

Hinweis erhalten, dass fehlende Werte (NaN) nicht gefiltert werden.

beide zu filtern, verwenden Sie: ds[(ds!=0)&(pd.isnull(ds))]