我有一个csv文件,其中有一个表,表中有经度、纬度和风速列。我有一个代码,它接受一个csv文件并删除指定范围之外的值。我想保留经度/纬度在-71.5经度和40.5纬度的点的0.5 lon/lat半径内的值
下面的示例代码删除经度和纬度分别不在-71到-72和40到41之间的任何值。当然,这会将值保留在平方范围内±在我的兴趣点周围0.5 lon/lat。但我感兴趣的是在一个半径为0.5lon/lat的圆形边界内寻找值。我应该如何修改我的代码
import pandas as pd
import numpy
df = pd.read_csv(r"C:\\Users\\xil15102\\Documents\\results\\EasternLongIsland50.csv") #file path
indexNames=df[(df['Longitude'] <= -72)|(df['Longitude']>=-71)|(df['Latitude']<=40)|(df['Latitude']>=41)].index
df.drop(indexNames,inplace=True)
df.to_csv(r"C:\\Users\\xil15102\\Documents\\results\\EasternLongIsland50.csv")
基本上,您需要检查值是否与中心点有一定距离(-71.5和40.5);为此,请使用毕达哥拉斯定理/距离公式:
d=sqrt(dx^2+dy^2)
所以在编程上,我会这样做:
很抱歉,这是一种讨厌的方式来摆脱行和你的方式看起来好多了,但代码应该工作
你应该写一个函数来计算距离你的兴趣点,并删除这些。一些帮助here。如果将
is_not_in_area
实现为一个函数来计算距离并检查dist < 0.5
,那么下面的示例肯定会起作用df = df.drop(df[is_not_in_area(df.lat, df.lon)].index)
(此代码来自here)
编辑:删除那些不在区域内的,而不是那些是哈哈
相关问题 更多 >
编程相关推荐