Изменить порядок значений строк на основе соответствующих данных

#python #pandas

#python #pandas

Вопрос:

Я некоторое время искал решение этой проблемы и, похоже, не могу его найти. У меня есть 5 столбцов, используемых в качестве идентификаторов для отдельных элементов, и еще 5 столбцов, указывающих их высоту. Моя цель — ранжировать идентификаторы НА ОСНОВЕ их соответствующей высоты. Любые идеи о том, как решить эту проблему, были бы высоко оценены.

  Person ID                                  Person Height (in)              
 ID1    ID2     ID3     ID4     ID5         ID1 ID2 ID3 ID4 ID5
 201566 202331  203500  203924  1628390     76  65  83  75  73
 202329 203081  203090  203468  203994      69  72  80  71  76
  

Ожидаемый результат:

 Person ID (Ranked by Person Height)             
ID1     ID2     ID3     ID4     ID5
202331  1628390 203924  201566  203500
202329  203468  203081  203994  203090
  

Ответ №1:

Проверьте с помощью sorted и после этого заново создайте свой фрейм данных

 l=[[y for _,y in sorted(zip(X, Y))] for Y , X  in zip(df1.values.tolist(),df2.values.tolist())]
sorteddf=pd.DataFrame(l,columns=df1.columns)
sorteddf
Out[20]: 
      ID1      ID2     ID3     ID4     ID5
0  202331  1628390  203924  201566  203500
1  202329   203468  203081  203994  203090