Hola a todos Me gustaría utilizar Python (o cualquier otro programa que funcione bien como R, Excel, etc.) para analizar el impacto de un evento. Supongamos que tengo el siguiente conjunto de datos (empresa en las columnas, fecha en las filas):
A B C D
Date1 0.11 0.21 0.31 0.41
Date2 0.12 0.22 0.32 0.42
Date3 0.13 0.23 0.33 0.43
Date4 0.14 0.24 0.34 0.44
Date5 0.15 0.25 0.35 0.45
Date6 0.16 0.26 0.36 0.46
Date7 0.17 0.27 0.37 0.47
Date8 0.18 0.28 0.38 0.48
Supongamos que quiero seleccionar un intervalo de elementos en función de los valores de la lista, como por ejemplo de esta matriz:
A Date2 Date5
B Date3 Date6
C Date4 Date7
D Date5 Date8
Es decir, de la empresa A
Quiero seleccionar los valores de Date2
hasta Date5
(que son: 0.12
, 0.13
, 0.14
y 0.15
); de la empresa B
Quiero seleccionar los valores de Date3
hasta Date6
(que son: 0.23
, 0.24
, 0.25
y 0.26
) y así sucesivamente. Observe que los rangos de fechas siempre tendrán la misma longitud.
Por lo tanto, me gustaría obtener este nuevo conjunto de datos:
A B C D
0.12 0.23 0.34 0.45
0.13 0.24 0.35 0.46
0.14 0.25 0.36 0.47
0.15 0.26 0.37 0.48
¿Cómo puedo conseguirlo? Me disculpo si no proporciono alguna parte del código Python pero no tengo idea de cómo hacerlo, lo intenté con VBS pero combiné el uso de macros con correcciones a mano...
Sólo tengo una idea: estaba pensando en crear un vector para cada columna que asuma el valor de 1
en correspondencia con el rango de fechas y 0
de lo contrario, es decir:
A B C D
Date1 0 0 0 0
Date2 1 0 0 0
Date3 1 1 0 0
Date4 1 1 1 0
Date5 1 1 1 1
Date6 0 1 1 1
Date7 0 0 1 1
Date8 0 0 0 1
y luego multiplicando este nuevo conjunto de datos con el anterior obtendríamos:
A B C D
Date1 0 0 0 0
Date2 0.12 0 0 0
Date3 0.13 0.23 0 0
Date4 0.14 0.24 0.34 0
Date5 0.15 0.25 0.35 0.45
Date6 0 0.26 0.36 0.46
Date7 0 0 0.37 0.47
Date8 0 0 0 0.48
Como último paso deberíamos eliminar todas las "celdas" que tienen el valor de cero. No sé si esta es la forma más fácil de hacerlo y no soy capaz de hacer todo el proceso.
Gracias por su visión :)