gpt4 book ai didi

python - 如何删除经度/纬度半径之外的 CSV 表值?

转载 作者:行者123 更新时间:2023-12-01 06:43:28 26 4
gpt4 key购买 nike

我有一个 csv 文件,其中的表格包含经度、纬度和风速列。我有一个代码,它接受 csv 文件并删除指定范围之外的值。我想保留经度/纬度位于 -71.5 经度和 40.5 纬度的点的 0.5 lon/lat 半径范围内的值。

下面的示例代码删除经度和纬度分别不在 -71 到 -72 和 40 到 41 之间的任何值。当然,这会将我感兴趣的点周围的值保留在 ±0.5 lon/lat 的平方范围内。但我有兴趣在我感兴趣的点半径为 0.5 lon/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)。

因此,以编程方式,我会这样做:

from math import sqrt

drop_indices = []

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

df.drop(drop_indices)

抱歉,这是一种令人厌恶的摆脱行的方法,你的方法看起来好多了,但代码应该可以工作。

关于python - 如何删除经度/纬度半径之外的 CSV 表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59348186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com