2016-04-29 103 views
1

我有一個數據幀有大量的經緯度點(305000)。我想通過每次迭代取樣並計算每個連續行之間的正弦值距離來減小數據幀的大小。如果距離太小,我想刪除這兩點之一。我如何在Python中做到這一點?我想使用shift(),但我不知道使用它的方式。這是我想要做的。減少經緯度

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+。如何解決這個問題的答案在於大問題。我會建議幾種方法之一。你想留下一個中心點嗎?一個代表點?

一些實施建議: 使用groupby或mask而不是刪除數據。 出於速度原因:儘量避免使用Pandas中的語句。