Complicado (para mí) remodelación de ancho a largo en Pandas
Los individuos (indexados de 0 a 5) eligen entre dos ubicaciones: A y B. Mis datos tienen un formato amplio que contiene características que varían según el individuo (ind_var) y características que varían solo según la ubicación (location_var).
Por ejemplo, tengo:
In [281]:
df_reshape_test = pd.DataFrame( {'location' : ['A', 'A', 'A', 'B', 'B', 'B'], 'dist_to_A' : [0, 0, 0, 50, 50, 50], 'dist_to_B' : [50, 50, 50, 0, 0, 0], 'location_var': [10, 10, 10, 14, 14, 14], 'ind_var': [3, 8, 10, 1, 3, 4]})
df_reshape_test
Out[281]:
dist_to_A dist_to_B ind_var location location_var
0 0 50 3 A 10
1 0 50 8 A 10
2 0 50 10 A 10
3 50 0 1 B 14
4 50 0 3 B 14
5 50 0 4 B 14
La variable 'ubicación' es la elegida por el individuo. dist_to_A es la distancia a la ubicación A desde la ubicación elegida por el individuo (lo mismo con dist_to_B)
Me gustaría que mis datos tuvieran este formulario:
choice dist_S ind_var location location_var
0 1 0 3 A 10
0 0 50 3 B 14
1 1 0 8 A 10
1 0 50 8 B 14
2 1 0 10 A 10
2 0 50 10 B 14
3 0 50 1 A 10
3 1 0 1 B 14
4 0 50 3 A 10
4 1 0 3 B 14
5 0 50 4 A 10
5 1 0 4 B 14
donde la opción == 1 indica que el individuo ha elegido esa ubicación y dist_S es la distancia desde la ubicación elegida.
Leí sobre el.apilar Método, pero no pudo averiguar cómo aplicarlo para este caso. ¡Gracias por tu tiempo!
NOTA: esto es solo un ejemplo simple. Los conjuntos de datos que busco tienen diferentes números de ubicación y número de individuos por ubicación, por lo que estoy buscando una solución flexible si es posible