Сложное (для меня) изменение формы от широкой к длинной в Пандах
Отдельные лица (с индексами от 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 метод, но не могне могу понять, как применить его для этого случая. Спасибо за ваше время!
ПРИМЕЧАНИЕ: это всего лишь простой пример. Наборы данных, которые яу меня разное количество мест и количество людей на одно место, поэтому яищу гибкое решение, если это возможно