Преобразовать датафрейм Pandas в датафрейм с сортированными значениями

Пытаюсь написать функцию, которая преобразует датафрейм с отсортированными значениями по строкам, в котором названия столбцов становятся значениями соседней со значением колонки

import pandas as pd
inp = [{'name':'ab', 'A':1, 'B':2,'С':3}, {'name':'cd','A':3, 'B':4,'С':5}, 
{'name':'ef','A':5, 'B':7,'С':6}]
df = pd.DataFrame(inp)
print(df)

  name  A  B  С
0   ab  1  2  3
1   cd  3  4  5
2   ef  5  7  6

  name   A   B   С
0   ab С 3 B 2 А 1
1   cd C 5 B 4 A 3
2   ef B 7 C 6 A 5  

Пока только получилось создать функцию, которая выводит серию из значений колонки, которую подаем на вход, но почему то не сортирует:

sorted_df = pd.DataFrame(columns = ['№1', '№2'])   
def recom(c):
    list = [] #создаем пустой список
    for i in df.columns: #проходим циклом по колонкам
       if i[0] == c: # если первая колонка = переменной, которую мы подаем на вход функции
               list.append((i, df[i])) 
    sorted_list = sorted(list, key=lambda x: x[1], reverse=True)#сортируем список в порядк убывания по количеству
    return sorted_list

Out:

[('A',
  0    1
  1    3
  2    5
Name: A, dtype: int64)]

Ответы (1 шт):

Автор решения: CrazyElf

Никогда не называйте переменные ключевыми словами языка, например list, потом могут быть загадочные ошибки на ровном месте.

Внимательно посмотрите на список, который вы сортируете:

[('A',
  0    1
  1    3
  2    5
Name: A, dtype: int64)]

Это список из одного элемента, поэтому там нечего сортировать. Единственный элемент списка - кортеж из двух элементов:

('A',
      0    1
      1    3
      2    5
    Name: A, dtype: int64)

Первый элемент кортежа - строка 'A'.

Второй элемент кортежа - это pandas series с индексами 0, 1, 2 и значениями 1, 3, 5.

Что вы хотите добиться при этом я не очень понимаю, поэтому пока просто указываю вам, что нужно разобраться, что вы вообще делаете, пока цель не очень понятна.

→ Ссылка