gpt4 book ai didi

python - 通过 pandas 坐标数据框查找单元格中的点

转载 作者:行者123 更新时间:2023-12-01 04:55:36 25 4
gpt4 key购买 nike

我必须通过两个 pandas 数据帧找到哪些点位于方形单元格网格内,给定点坐标和单元格边界坐标。我将 dfc 称为包含代码和单元格边界坐标的数据框(我简化了问题,在实际分析中,我有一个包含地理点和大量要检查的点的大网格):

Code,minx,miny,maxx,maxy
01,0.0,0.0,2.0,2.0
02,2.0,2.0,3.0,3.0

dfp包含Id和点坐标的数据框:

Id,x,y
0,1.5,1.5
1,1.1,1.1
2,2.2,2.2
3,1.3,1.3
4,3.4,1.4
5,2.0,1.5

现在我想执行搜索,在 dfc 数据帧中返回该点所在网格的新列(称为“GridCode”)。单元格应该是完美的平方,所以我想通过以下方式执行分析:

a = np.where(
(dfp['x'] > dfc['minx']) &
(dfp['x'] < dfc['maxx']) &
(dfp['y'] > dfc['miny']) &
(dfp['y'] < dfc['maxy']),
r2['Code'],
'na')

避免数据帧上出现多个循环。数据帧的长度不相同。生成的数据框应如下所示:

   Id    x    y GridCode
0 0 1.5 1.5 01
1 1 1.1 1.1 01
2 2 2.2 2.2 02
3 3 1.3 1.3 01
4 4 3.4 1.4 na
5 5 2.0 1.5 na

预先感谢您的帮助!

最佳答案

可能是更好的方法,但由于这已经存在了一段时间了..

使用Pandas bool 索引来过滤dfc数据框而不是np.where()

def findGrid(dfp):  
c = dfc[(dfp['x'] > dfc['minx']) &
(dfp['x'] < dfc['maxx']) &
(dfp['y'] > dfc['miny']) &
(dfp['y'] < dfc['maxy'])].Code

if len(c) == 0:
return None
else:
return c.iat[0]

然后使用 pandas apply() 函数

dfp['GridCode'] = dfp.apply(findGrid,axis=1)

会产生这个

    Id  x   y   GridCode
0 0 1.5 1.5 1
1 1 1.1 1.1 1
2 2 2.2 2.2 2
3 3 1.3 1.3 1
4 4 3.4 1.4 NaN
5 5 2.0 1.5 NaN

关于python - 通过 pandas 坐标数据框查找单元格中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464394/

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