2016-04-29 76 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中的语句。