Python, cómo gestionar múltiples datos en una lista o diccionario con cálculos y funcionalidad FIFO.
Necesito gestionar múltiples datos organizados de la siguiente manera:
SLOT1
timestamp | value1 | value2 | value3 | value4 |
---|---|---|---|---|
xxxxxxxxx | aaaaaa | bbbbbb | cccccc | dddddd |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
xxxxxxxxx | qqqqqq | rrrrrr | ssssss | tttttt |
SLOT2
timestamp | value1 | value2 | value3 | value4 |
---|---|---|---|---|
xxxxxxxxx | aaaaaa | bbbbbb | cccccc | dddddd |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
xxxxxxxxx | qqqqqq | rrrrrr | ssssss | tttttt |
……
SLOT ‘n’
timestamp | value1 | value2 | value3 | value4 |
---|---|---|---|---|
xxxxxxxxx | aaaaaa | bbbbbb | cccccc | dddddd |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
……… | …… | …… | …… | …… |
xxxxxxxxx | qqqqqq | rrrrrr | ssssss | tttttt |
La estructura de datos no debe ser un Pandas Dataframe, sino preferiblemente una estructura nativa sin el uso de bibliotecas externas.
Cada Slot individual debe tener una longitud fija y los nuevos datos que lleguen (digamos una nueva fila) deben ser tratados con la lógica FIFO. Entonces, los datos más recientes deben agregarse al final y el primero debe extraerse manteniendo fija la longitud total de la estructura de datos.
Por último, pero no menos importante, necesito agregar una columna adicional a cada slot para realizar un tipo de cálculo como:
“columnadded” = (“value1” + “value2”) / (“value3” + “value4”)
Gracias a todos los que me ayudarán con esto.
davy.ai
Solución
Para gestionar los datos en el formato descrito, podemos utilizar una lista de diccionarios donde cada diccionario representa una fila en la tabla. Podemos utilizar los métodos
append
ypop
de una lista para implementar la lógica FIFO para gestionar la longitud fija de cada campo.Para agregar una columna adicional a cada campo, podemos iterar sobre la lista de diccionarios y agregar el valor calculado al diccionario de cada fila.
Aquí tienes una implementación de ejemplo:
Salida:
En este ejemplo, inicializamos una lista de listas vacías para cada campo. Luego, definimos dos métodos:
agregar_datos_a_campo
yagregar_columna_calculada
.El método
agregar_datos_a_campo
verifica si el campo está vacío y agrega la nueva fila, o bien mantiene la longitud fija eliminando la fila más antigua y agregando la nueva fila. El métodoagregar_columna_calculada
itera sobre las filas en un campo y calcula el valor para la columna adicional según la fórmula dada, luego agrega el valor al diccionario de cada fila.Luego, demostramos el uso de estos métodos para agregar datos al primer campo y calcular la columna adicional.