Python 具有递增后缀的多变量代码自动化
从我这里的第一个线程继续 所以我已经有了一个叫做多边形的列表 我现在正在尝试自动执行10000个多边形的代码(下面显示的两个多边形的代码作为示例)。如果我手动处理10000个多边形,这段代码可以很好地工作,但是我在自动处理10K个多边形时遇到了问题Python 具有递增后缀的多变量代码自动化,python,dataframe,Python,Dataframe,从我这里的第一个线程继续 所以我已经有了一个叫做多边形的列表 我现在正在尝试自动执行10000个多边形的代码(下面显示的两个多边形的代码作为示例)。如果我手动处理10000个多边形,这段代码可以很好地工作,但是我在自动处理10K个多边形时遇到了问题 ### Polygon 1 def checkPolygon1(row): point = Point((row['X']), (row['Y'])) return polygon1.contains(point) #Apply
### Polygon 1
def checkPolygon1(row):
point = Point((row['X']), (row['Y']))
return polygon1.contains(point)
#Apply fn to each row of dataframe (datacopy)
datacopy.apply(checkPolygon1, axis=1)
#Create new variable InPolygon1 in data if X, Y in shapely file
datacopy['InPolygon1'] = datacopy.apply(checkPolygon1, axis=1)
### Polygon 2
def checkPolygon2(row):
point = Point((row['X']), (row['Y']))
return polygon2.contains(point)
datacopy.apply(checkPolygon2, axis=1)
#Create new variable InPolygon2 in data if X, Y in shapely file
datacopy['InPolygon2'] = datacopy.apply(checkPolygon2, axis=1)
其思想是拥有一个包含10000个变量的数据帧,因此InPolygon1、InPolygon2…inpolygon1000
我的一些尝试:
因此,首先,我尝试创建另一个需要
polygons[0].contains(point),
polygons[1].contains(point)...polygons[10000].contains(point)
但我无法正确地创建它
def checkPolygon(row):
point = Point((row['X']), (row['Y']))
return point
nextpolygons = []
def check():
for i in range(0,2): #actual range(0,10000)
nextpolygons.append(polygons[i].contains(checkPolygon(row)))
check() #NameError: name 'row' is not defined
我的想法是,在正确定义此列表后,我将尝试自动化以下部分:
datacopy.apply(checkPolygon1, axis=1)
datacopy['InPolygon1'] = datacopy.apply(checkPolygon1, axis=1)
如果您对此有任何想法,我们将不胜感激 欢迎来到SO,请使用预览检查您的帖子是否正确格式化,以便我们阅读。我已经为你编辑了这篇文章(等待批准)。你为什么不在@LaurentPorte CR上发表文章,是为了改进工作代码的风格,而不是修复出现错误的代码。在
check()
函数中定义的row
在哪里?所以我添加了一些code def checkPolygon(row)当前位置在我原来的帖子中的部分…它似乎仍然不能自动完成。我可能错过了什么。。