Zum extrahieren von nicht-nan-Werte aus mehreren Zeilen in ein pandas dataframe
Arbeite ich an mehreren taxi-datasets. Ich habe verwendet, pandas zu concat alle datasets in einer einzigen dataframe.
Mein dataframe so aussieht.
675 1039 #and rest 125 taxis
longitude latitude longitude latitude
date
2008-02-02 13:31:21 116.56359 40.06489 Nan Nan
2008-02-02 13:31:51 116.56486 40.06415 Nan Nan
2008-02-02 13:32:21 116.56855 40.06352 116.58243 39.6313
2008-02-02 13:32:51 116.57127 40.06324 Nan Nan
2008-02-02 13:33:21 116.57120 40.06328 116.55134 39.6313
2008-02-02 13:33:51 116.57121 40.06329 116.55126 39.6123
2008-02-02 13:34:21 Nan Nan 116.55134 39.5123
wo 675,1039 sind die taxi-ids. Grundsätzlich gibt es Total 127 taxis mit Ihren entsprechenden breiten-und Längengrade Säulen-up.
Habe ich mehrere Möglichkeiten zum extrahieren von nicht-null-Werte für eine Zeile.
df.ix[k,df.columns[np.isnan(df.irow(0))!=1]]
(or)
df.irow(0)[np.isnan(df.irow(0))!=1]
(or)
df.irow(0)[np.where(df.irow(0)[df.columns].notnull())[0]]
jeder der oben genannten Befehle zurück,
675 longitude 116.56359
latitude 40.064890
4549 longitude 116.34642
latitude 39.96662
Name: 2008-02-02 13:31:21
nun möchte ich alle extrahieren der notnull-Werte aus den ersten paar Zeilen(sagen wir von Zeile 1 bis Zeile 6).
wie mache ich das?
kann ich wohl loop it up. Aber ich will eine nicht-geloopte Weg, es zu tun.
Jede Hilfe, Vorschläge sind willkommen.
Vielen Dank im adv! 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als ein heads-up,
irow
werden veraltet in der nächsten Version des pandas. Neue Methoden, mit klarer, Nutzung, ersetzen Sie es.http://pandas.pydata.org/pandas-docs/dev/indexing.html#deprecations
In 0.11 (0.11rc1 ist jetzt raus), ist dies sehr einfach mit
.iloc
, wählen Sie zunächst die ersten 6 Zeilen, dann dropna fällt jede Zeile mitnan
(Sie können auch einige Optionen, um dropna exakt zu Steuern, welche Spalten Sie möchten als)Ich erkannte Sie wollen, 1:6, ich habe 0:6 in meiner Antwort....
dropna(subset=['C'])
Mit Jeff dataframe:
Können wir ersetzen nans durch einige Zahl, die wir kennen, ist nicht in der dataframe:
Wenn Sie möchten, um nur die nicht-null-Werte, ohne die Iteration, die Sie tun können:
Das problem dieses Ansatzes ist, dass das Resultat sind Listen, so verlieren Sie Informationen über den index.
Andere option ist:
In diesem Fall, dass Sie nicht verlieren Informationen über den index, obwohl das wirklich ist, ähnlich wie die vorherigen Antworten.
Hoffe, es hilft!