Python - Crear lista a partir de nodos relacionados en dos columnas

 
Vista:

Crear lista a partir de nodos relacionados en dos columnas

Publicado por Mari Carmen (1 intervención) el 05/07/2018 20:51:26
Llevo mucho tiempo dándole vueltas a este caso y escribo ya por desesperación.

Os explicaré el caso y os pondré el código que yo he conseguido hacer, pero que no me funciona. Mis conocimientos de Python son limitados, soy ingeniera pero no programadora, así que seguro que cometo errores de principiante. Había programado en c++ , en Matlab pero no en Python.

El caso es que tengo que crear una lista, llamémosle red a partir de la lectura de los nodos de una red eléctrica. El nodo inicial será la salida del transformador, el que le sigue será el que está en su mismo índice pero en la columna de al lado. Destacar que los datos están en dos columnas que leo de un fichero Excel, llamadas nodo inicio y nodo final (lo de inicio y final parece que indica algo ...pero a mi no me aclara demasiado porqué unos nodos están a un lado o al otro).


Os pongo un ejemplo reducido de los datos que tengo que leer, como se interpretan y el resultado que quiero obtener.



datos

estos serían los datos que leeríamos, sin ningún orden aparente. sólo sabemos el nodo inicial, en este caso el 114 i que el siguiente nodo será el 117 porque es el que tiene al lado. entonces buscamos el 117 siete en la siguiente columna por lo tanto el siguiente nodo añadir a la lista sería el 113, pero aquí nos encontramos con una ramificación y aquí es dónde ya me pierdo. Deberíamos descartar el 113 ya leído y buscar el siguiente, por ejemplo el que está en segunda posición y agregaríamos a la lista 1174 (vemos que este tiene una pareja pero como aún hay celdas con el nodo 113 sin leer seguiríamos recorriendo las celdas en búsqueda del siguiente) , 112, luego 116, luego, pasaríamos a leer la siguiente columna para ver que no hay ningún 113 (en este caso sí lo hay), y agregaríamos 1115. Después tendríamos que comprobar de todos los nodos agregados cuales tienen a su vez una ramificación. Yo he pensado que la mejor manera de hacer el código es eliminando o substituyendo por 0 las celdas una vez leídas y agregados los nodos. Pero todo me da errores.



el caso es que el resultado final debería ser red[114,117,113,1174,112,116,1115,1185]


red




Aquí os dejo una de las versiones del código, que no funciona, porque he probado tantas cosas que ya no sé dónde me he quedado. Antes había un while antes de los for pero tampoco me funcionó.

Mi idea es que primero tengo un nodo de referencia, el del trafo, supongamos que lo entro por teclado y lo guardo en la variable nodo, con este calculo el segundo inmediato porque ya sé que será el que esté en la columna de al lado y a partir de ahí pongo en marcha el recorrido de la función.


codigo


GRACIASS!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder