2016-04-29 9 views
1

私は、緯度/経度の点数が多い(305000)データフレームを持っています。私は、各反復、サンプルを取って、各連続する行の間のhaversineの距離を計算することによって、私のデータフレームのサイズを縮小したい。距離が小さすぎる場合は、2点のうちの1点を削除したい。どのように私はこれをPythonで行うことができますか?私はshift()を使いたかったのですが、それを使うライトの方法は分かりません。これは私がやろうとしていることです。lat lonポイントを減らす

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 

答えて

1

マスクされた配列を使用し、削除するポイントごとにマスク値をtrueに設定することはどうですか?

-1

大きな質問は「なぜあなたはそれをしたいのですか?そして、「あなたが終わったら、あなたは何を得るでしょうか?」 (速度の他に)。あなたのアプローチの問題は、削除する2つ以上のものを決めることです。これにアプローチする方法に対する答えは大きな質問にあります。私はいくつかのアプローチの1つを提案します。あなたは中心点を残しておきたいですか?代表的な点?

いくつかの実装の提案: データを削除する代わりに、グループバイまたはマスクを使用します。 スピード上の理由から:Pandasのfor文を使用しないでください。

関連する問題