Сложное (для меня) изменение формы от широкой к длинной в Пандах

Отдельные лица (с индексами от 0 до 5) выбирают между двумя местоположениями: A и B. Мои данные имеют широкий формат, содержащий характеристики, которые различаются у отдельных лиц (ind_var), и характеристики, которые различаются только в зависимости от местоположения (location_var).

Например, у меня есть:

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

Переменная 'место нахождения' это тот, который выбрал человек. dist_to_A - расстояние до местоположения A от местоположения, выбранного индивидуумом (то же самое с dist_to_B) I '

Мне бы хотелось, чтобы мои данные имели эту форму:

    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

где выбор == 1 указывает, что человек выбрал это местоположение, а dist_S - расстояние от выбранного местоположения.

Я читал о.stack метод, но не могне могу понять, как применить его для этого случая. Спасибо за ваше время!

ПРИМЕЧАНИЕ: это всего лишь простой пример. Наборы данных, которые яу меня разное количество мест и количество людей на одно место, поэтому яищу гибкое решение, если это возможно

Ответы на вопрос(3)

Ваш ответ на вопрос