我有一个包含大量lat / lon点(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
答案 0 :(得分:1)
如何使用蒙面数组并为每个删除的点设置掩码值为真?
答案 1 :(得分:-1)
最大的问题是“你为什么要那样做?”并且“一旦你完成它会得到什么?” (除了速度)。您的方法的问题是决定删除2+中的哪一个。如何解决这个问题的答案在于大问题。我建议采用一些方法。你想留下一个中心点吗?代表点?
一些实施建议: 使用groupby或mask而不是删除数据。 出于速度原因:尽量避免在Pandas中使用for语句。