Не используйте переменную counter, а оператор break, когда точка выбирается в пределах многоугольника. Переменная counter всегда будет равна единице при выходе, поэтому она не несет новую информацию. Я не очень знаком с библиотекой Geopandas, но вы можете найти решение с помощью Shapely , который является очень хорошей библиотекой imo. С этой структурой программы ваш объект становится более общедоступным.
from shapely.geometry import Point, Polygon
import random
bounds = [(0, 0), (1, 0), (1, 1), (0, 1)]
class Agent():
def __init__(self, bounds):
self.polygon = Polygon(bounds)
# implement your object wide dataframe here to which you can append
def add_random_point(self):
xmin, ymin, xmax, ymax = self.polygon.bounds
while True:
x = random.uniform(xmin, xmax)
y = random.uniform(ymin, ymax)
if Point(x, y).within(self.polygon):
# if this condition is true, add to a dataframe here
print(x, y)
break
obj = Agent(bounds)
obj.add_random_point()