如何删除经纬度半径以外的CSV表值?

2024-09-30 12:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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")

Tags: 文件csv代码importdf半径usersresults
2条回答

基本上,您需要检查值是否与中心点有一定距离(-71.5和40.5);为此,请使用毕达哥拉斯定理/距离公式:

d=sqrt(dx^2+dy^2)

所以在编程上,我会这样做:

drop_indices = []

for row in range(len(df)):
    if (math.sqrt(math.abs(-71.5 - df[row]['Longitude'])*math.abs(-71.5 - df[row]['Longitude'])+math.abs(40.5-df[row]['Latitude']*math.abs(40.5-df[row]['Latitude'])) > 0.5:
       drap_indices.append(i)

df.drop(drop_indices)

很抱歉,这是一种讨厌的方式来摆脱行和你的方式看起来好多了,但代码应该工作

你应该写一个函数来计算距离你的兴趣点,并删除这些。一些帮助here。如果将is_not_in_area实现为一个函数来计算距离并检查dist < 0.5,那么下面的示例肯定会起作用

df = df.drop(df[is_not_in_area(df.lat, df.lon)].index)

(此代码来自here

编辑:删除那些不在区域内的,而不是那些是哈哈

相关问题 更多 >

    热门问题