1 votos

Geopandas Puntos dentro de Polígono; ¿Existe algún método para convertir el resultado de una serie bool en una lista python?

Trabajar en el sistema operativo Linux con Visual Studio Code; módulo Jupyter Notebook.

import geopandas as gpd
ubp1 = "/media/rg/data/map/urban boundary.geojson"
poly1 = gpd.read_file(ubp1)

import shapely.speedups
shapely.speedups.enable()

inUrban = gdf.within(poly1.loc[0, 'geometry'])

Me gustaría manipular el resultado bool así que he convertido la serie pandas a una lista Python.

s = list(inUrban)

Probé esto:

urban = []
dex = 0
for i in s:
    if s[dex] == "True":
        urban[dex] = 2
    else:
        urban[dex] = 0
    dex=+1

pero eso dio lugar a un error:

IndexError                   Traceback (most recent call last)
<ipython-input-52-ecba01b18d72> in <module>
      8         urban[dex] = 2
      9     else:
---> 10         urban[dex] = 0
     11     dex=+1

IndexError: list assignment index out of range

3voto

nitinsavant Puntos 6

El error se produce cuando se intenta asignar un valor a una posición de índice que no existe en urban lista.

Puede utilizar append() para solucionar este error.

urban = []
dex = 0
for i in s:
    if s[dex] == "True":
        urban.append(2)
    else:
        urban.append(0)
    dex=+1

Una forma mejor de resolver este error sería utilizar lo siguiente:

urban = [ 2 if v == "True" else 0 for v in s ]

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X