Как отсортировать столбец по данным из другого столбца
В таблице cars есть столбец ID_person - владельцев авто. Есть таблица person, в ней столбец ID, столбец weight и height. Задача отсортировать таблицу cars по Вес/рост владельца. Проблема в том, что размер таблицы person 20000 уникальных людей, а cars - 15000 при этом у одного человека может или не быть машины или быть несколько.
Я пробовал создать столбец w/h разделив столбец Weight на Height и отсортировать таблицу people по столбцу w/h с помощью people.sort_values['w/h'] и пробовал отсортировать cars так cars.sort_values[people['ID']]. Но ничего не вышло.
Вот пример таблицы cars
ID ID_person Model
0 3 LADA
1 2 Toyota
2 1 Toyota
3 3 Daewoo
4 4 Subaru
Вот пример таблицы people после сортировки по w/h
ID Name Height Weight h_w
5 Журавлёвa Ия 184 40 0.21739130434782608
4 Пестовa Снежана 183 40 0.2185792349726776
1 Исаковa Мария 184 41 0.22282608695652173
2 Зуевa Альбина 179 40 0.22346368715083798
3 Горбуновa Эдита 183 41 0.22404371584699453
Надо получить cars в таком виде
ID, ID_person Model
4 4 Subaru
2 1 Toyota
1 2 Toyota
0 3 LADA
3 3 Daewoo
Ответы (1 шт):
попробуйте так:
res = (cars
.merge(pers.eval("x=Weight/Height"),
left_on="ID_person", right_on="ID",
suffixes=["", "_2"])
.sort_values("x")
[cars.columns])
результат:
In [80]: res
Out[80]:
ID ID_person Model
4 4 4 Subaru
3 2 1 Toyota
2 1 2 Toyota
0 0 3 LADA
1 3 3 Daewoo