数据框的小部分是:
border =
12_longitude_1 12_latitude_1 14_longitude_2 14_latitude_2 15_longitude_3 15_latitude_3
11 12 13 14 15 16
11 12 13 14 15 16
11 12 13 14 15 16
我想这样做,但是在IndexError: index 3 is out of bounds for axis 0 with size 3
中出现curr_lat_name = border.columns[col_num + 1]
错误:
pd_out = pd.DataFrame({'zone': [], 'number': []})
for col_num in range(0, len(border.columns), 2):
curr_lon_name = border.columns[col_num]
curr_lat_name = border.columns[col_num + 1]
num = curr_lon_name.split("_")[-1]
border = border[[curr_lon_name, curr_lat_name]].dropna()
border[curr_lon_name] = border[curr_lon_name].replace(r'[()]', '', regex=True)
border[curr_lat_name] = border[curr_lat_name].replace(r'[()]', '', regex=True)
border[curr_lon_name] = pd.to_numeric(border[curr_lon_name], errors='coerce')
border[curr_lat_name] = pd.to_numeric(border[curr_lat_name], errors='coerce')
geometry2 = [Point(xy) for xy in zip(border[curr_lon_name],border[curr_lat_name])]
border_point = gpd.GeoDataFrame(border,crs=crs,geometry=geometry2)
turin_final = Polygon([[p.x, p.y] for p in border_point.geometry])
within_turin = turin_point[turin_point.geometry.within(turin_final)]
curr_len = len(within_turin)
pd_out = pd_out.append({'zone': "long_lat_{}".format(num), 'number': curr_len}, ignore_index=True)
图书馆:
import numpy as np
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point, Polygon