2016-04-29 12 views
1

Ich habe einen Datenrahmen mit einer großen Anzahl von Breitengrad/lon Punkten (305000). Ich möchte die Größe meines Datenrahmens reduzieren, indem ich für jede Iteration eine Stichprobe nehme und den Abstand zwischen den aufeinanderfolgenden Zeilen berechnet. Wenn die Entfernung zu klein ist, möchte ich einen der beiden Punkte löschen. Wie kann ich das in Python machen? Ich wollte shift() verwenden, aber ich weiß nicht, wie man es benutzen kann. Das versuche ich.reduzieren lat lon Punkte

rows=random.sample(df.index,50) 

for i in range(50): 

    rows = np.random.choice(df.index.values, 1000) 

    sampled_df = df.ix[rows] 

    if haversine(sampled_df,sampled_df.shift()) < e 

     delete one row 

Antwort

1

Wie über eine maskierte Array und Einstellen der Maskenwert auf true für jeden Punkt verwenden Sie entfernen?

-1

Die großen Fragen sind: "Warum willst du das machen?" und "Was würde es dir bringen, wenn du fertig bist?" (Außer Geschwindigkeit). Das Problem mit Ihrem Ansatz ist zu entscheiden, welche der 2+ zu löschen. Die Antwort auf diese Frage liegt in den großen Fragen. Ich würde einen von einigen Ansätzen vorschlagen. Möchtest du einen Mittelpunkt haben? ein repräsentativer Punkt?

Ein paar Vorschläge zur Implementierung: Verwenden Sie eine groupby oder Maske, anstatt Daten zu löschen. Aus Gründen der Geschwindigkeit: Vermeiden Sie die Verwendung für Anweisungen in Pandas.

Verwandte Themen