Crear una lista a partir de un marco de datos en Python, también implica agregar el índice.
De una lista de nombres creada (greater_three), quiero encontrar todos los nombres en esa lista en mi DataFrame (new), y modificar esos valores de “coordenadas de ubicación” en ese DataFrame a una nueva lista. Pero cuando agrego, también estoy tomando un valor de índice.
location = []
for name in new['DBA Name']:
if name in greater_three:
location.append(new['Location'])
else:
pass
Location
Mi lista de salida (location) debe ser así:
[[41.7770923949, -87.6060037796],
[41.7770923949, -87.6060037796],
[41.7770923949, -87.6060037796],
Pero lo estoy obteniendo con un índice de esta manera:
[0 (41.777092394888655, -87.60600377956905)
1 (41.78457591499572, -87.6547753761994)
2 (41.74427989606148, -87.5716351762223)
3 (41.69164609748754, -87.6422140544927)
También hay un problema menor pero curioso, está iterando muchas veces a través de (después de que eliminé todos los nombres duplicados del marco de datos) como se ve a continuación, debería tener solo una longitud de 26 coordenadas (25 incluyendo 0):
22 (41.901086765978654, -87.74854019856667)
23 (41.70774046981763, -87.64300283870763)
24 (41.75937734623751, -87.66111539963164)
25 (41.75655095611123, -87.61068980246957) Name: Location, dtype: object,
0 (41.777092394888655, -87.60600377956905)
1 (41.78457591499572, -87.6547753761994)
2 (41.74427989606148, -87.5716351762223)
…
23 (41.70774046981763, -87.64300283870763)
24 (41.75937734623751, -87.66111539963164)
25 (41.75655095611123, -87.61068980246957) Name: Location, dtype: object,
0 (41.777092394888655, -87.60600377956905)
1 (41.78457591499572, -87.6547753761994)
2 (41.74427989606148, -87.5716351762223)
3 (41.69164609748754, -87.6422140544927)
Mis columnas se ven así, solo necesito las coordenadas en una lista, puedo tomarlas de ‘Longitutude’ y ‘Latitude’ o de ‘Location’.
enter image description here
davy.ai
Para obtener la lista de salida sin el índice, puede utilizar el método
.tolist()
en la columnaLocation
:python
location = []
for name in new['DBA Name']:
if name in greater_three:
location.append(new['Location'].tolist())
else:
pass
Location
Esto debería darle la lista de salida sin el índice:
[[41.7770923949, -87.6060037796],
[41.7770923949, -87.6060037796],
[41.7770923949, -87.6060037796],
...
[41.75655095611123, -87.61068980246957]]
Si desea obtener las coordenadas de las columnas
Longitude
yLatitude
, puede utilizar la funciónzip
para combinar las dos columnas en una lista de tuplas:python
location = []
for name in new['DBA Name']:
if name in greater_three:
location.append(list(zip(new['Longitude'], new['Latitude'])))
else:
pass
Location
Esto debería darle la lista de salida sin el índice:
[[(-87.6060037796, 41.7770923949), (-87.6060037796, 41.7770923949), (-87.6060037796, 41.7770923949), ..., (-87.61068980246957, 41.75655095611123)]]