ich mit dem folgenden Datenrahmen zu tun habe:Wie pandas Datenrahmen zu filtern?
id1 id2 lat lon
0 1 2 18.46290 -66.10301
1 1 2 37.549 -71.477
2 1 2 41.490 -71.326
3 0 0 0.0 0.0
4 1 3 42.058 -70.577
5 1 3 42.402 -70.642
6 1 3 41.589 -71.281
7 1 3 37.649 -71.440
8 0 0 0.0 0.0
9 2 2 18.462 -66.103
10 2 2 18.44857 -66.089
11 2 2 42.242 -70.97
12 0 0 0.0 0.0
Die obigen Daten Bahndaten sind, und ich möchte alle Bahnen finden, die beginnen oder in einer Stadt endet, sagen NYC.
Jede Trajektorie hat mehrere Punkte, und die Trajektorien sind durch alle 0-Zeilen im obigen df getrennt.
Also, Zeilen 0-2 ist eine Trajektorie, Zeilen 4-7 andere und so weiter. (Auch wenn alle 0-Zeilen entfernt werden müssen, identifizieren "id1" und "id2" zusammen die verschiedenen Trajektorien, wie wir sehen können, wenn id1 oder id2 sich ändern, erhalten wir eine neue Trajektorie).
Ich habe eine andere df, sagen df2 die alle Koordinaten eines bestimmten Region der Stadt enthält, in dem ich die Bahnen beschränkt werden soll:
lat lon
0 40.711 -70.000
1 40.734 -70.099
2 40.740 -70.110
3 40.750 -70.120
ich den ersten Punkt übereinstimmen soll und die zuletzt Punkt jeder Trajektorie von df1 mit den Koordinaten in df2, wenn entweder der erste Punkt ODER der letzte Punkt mit einem Koordinatenpaar in df2 übereinstimmt, möchte ich nur diese Trajektorien behalten.
(Wie ich erwähnt habe, möchte ich nur Trajektorien behalten, die in der Stadt enden und beginnen, also im Fall von "Zeilen 0-2" in df1, würde ich lat und lon von Zeile 0 (Startpunkt) und Zeile 2 (Endpunkt einer Trajektorie) mit df2, für "Zeilen 4-7" würde ich lat und lon von Zeile 4 (Startpunkt) und dann Zeile 7 (Endpunkt) usw. für das ganze df anpassen).
Vielleicht könnte ich die Lösung gefunden haben, wenn ich nur für die Zeilen mit bestimmtem „lat“ und „lon“, wie im folgenden Code habe suchen:
mask = ((df["lat"].isin(df2["lat"])) && (df["lon"].isin(df2["lon"])))
new_df = pd.DataFrame(df[mask])
new_df.head()
Aber ich habe abzufragen, um die Start- und Endpunkt jeder Bahn, die durch Nullen getrennt sind. Ich habe keine Ahnung, wie das geht.
Ich hoffe, die Frage ist klar, lassen Sie mich wissen, wenn etwas unklar ist.
Jede Hilfe wäre willkommen.
Hat der 'df2' DF wirklich enthält __all__ Koordinaten einer bestimmten Region der Stadt - ist das überhaupt möglich? Wie genau sind diese Koordinaten? – MaxU
@MaxU Nein, df2 dient nur zur Illustration. – Liza
Ich fragte nach Ihren realen Daten ... Betrachten Sie dieses Beispiel: Sie haben den ersten Punkt einer Flugbahn mit Koordinaten: '(40.7111, -70.0001)' und in 'df2' haben Sie' (40.711, -70.000) ' - sie stimmen nicht überein – MaxU