尝试使用 for 循环遍历数据框
Trying to iterate through a dataframe with a for loop
作为我的第一个项目之一,我正在开发一个程序,该程序接收一个地址和 return 该地址所在的政治区。我已经编写了地理编码函数,现在我正在开发一个函数,它接受 long/lat 作为参数,遍历 shapefile 中的多边形。如果它找到包含这些坐标的多边形,returns 与该多边形关联的地区名称。
我已经编写了该函数的一个版本,但它需要我指定(使用 loc 方法)要检查的多边形。如果坐标在该多边形内,则它 return 是相关地区的名称。否则,它 return 是“否”。下面是此函数的代码:
def senate_function(long, lat): #takes in long and lat coordinates as arguments
coordinates_1 = Point(long, lat) #converts coordinates to a point using Point method
polygon = (s_districts.loc[3]['geometry']) #specifies which polygon to look in
if coordinates_1.within(polygon) == True: #prints True if coordinates are in specified polygon
print(s_districts['NAMELSAD20'][3])
else: print("No")
我已经在多个地址上对其进行了测试并确认它确实有效,所以我的下一步是编写此函数的更好版本,它将遍历行,找到坐标所在的多边形,然后 return关联的区名。这是我写的:
def senate_function_1(long, lat): #takes in long and lat coordinates as arguments
coordinates_2 = Point(long, lat) #converts coordinates to a point using Point method
for row in s_districts["geometry"]:#loops through the column that contains polygons
if coordinates_2.within == True: #checks to see if points is within the polygon
print(s_districts['NAMELSAD20']) #if true, prints the district name corresponding to the polygon
else: print('False')
当我调用此函数时,它 return 每一行返回“False”。所以它遍历文件,但出于某种原因,它没有检查坐标是否在多边形内。我对编码很陌生,如果我搞砸了术语,我很抱歉,但我想尽可能详细。谢谢!
根据您的描述,您可能忘记了在第二个代码段中指定 within 方法的参数。您还遗漏了要打印哪个地区名称的规范。目前它总是会打印出整个系列。我认为您可能想要以下内容:
def senate_function_1(long, lat): #takes in long and lat coordinates as arguments
coordinates_2 = Point(long, lat) #converts coordinates to a point using Point method
for row in s_districts["geometry"]:#loops through the column that contains polygons
if coordinates_2.within(row) == True: #checks to see if points is within the polygon
print(s_districts['NAMELSAD20'][s_districts.geometry==row]) #if true, prints the district name corresponding to the polygon
else: print('False')
作为我的第一个项目之一,我正在开发一个程序,该程序接收一个地址和 return 该地址所在的政治区。我已经编写了地理编码函数,现在我正在开发一个函数,它接受 long/lat 作为参数,遍历 shapefile 中的多边形。如果它找到包含这些坐标的多边形,returns 与该多边形关联的地区名称。
我已经编写了该函数的一个版本,但它需要我指定(使用 loc 方法)要检查的多边形。如果坐标在该多边形内,则它 return 是相关地区的名称。否则,它 return 是“否”。下面是此函数的代码:
def senate_function(long, lat): #takes in long and lat coordinates as arguments
coordinates_1 = Point(long, lat) #converts coordinates to a point using Point method
polygon = (s_districts.loc[3]['geometry']) #specifies which polygon to look in
if coordinates_1.within(polygon) == True: #prints True if coordinates are in specified polygon
print(s_districts['NAMELSAD20'][3])
else: print("No")
我已经在多个地址上对其进行了测试并确认它确实有效,所以我的下一步是编写此函数的更好版本,它将遍历行,找到坐标所在的多边形,然后 return关联的区名。这是我写的:
def senate_function_1(long, lat): #takes in long and lat coordinates as arguments
coordinates_2 = Point(long, lat) #converts coordinates to a point using Point method
for row in s_districts["geometry"]:#loops through the column that contains polygons
if coordinates_2.within == True: #checks to see if points is within the polygon
print(s_districts['NAMELSAD20']) #if true, prints the district name corresponding to the polygon
else: print('False')
当我调用此函数时,它 return 每一行返回“False”。所以它遍历文件,但出于某种原因,它没有检查坐标是否在多边形内。我对编码很陌生,如果我搞砸了术语,我很抱歉,但我想尽可能详细。谢谢!
根据您的描述,您可能忘记了在第二个代码段中指定 within 方法的参数。您还遗漏了要打印哪个地区名称的规范。目前它总是会打印出整个系列。我认为您可能想要以下内容:
def senate_function_1(long, lat): #takes in long and lat coordinates as arguments
coordinates_2 = Point(long, lat) #converts coordinates to a point using Point method
for row in s_districts["geometry"]:#loops through the column that contains polygons
if coordinates_2.within(row) == True: #checks to see if points is within the polygon
print(s_districts['NAMELSAD20'][s_districts.geometry==row]) #if true, prints the district name corresponding to the polygon
else: print('False')