Транспонирование данных в таблице Python

Необходимо транспонировать столбцы в таблице. Важно, что значения названия столбцов (A,B) - это строковые переменные должны стать названиями полученных вертикальных столбцов, а порядковые номера X(1)... порядковым номером строк полученной таблицы.

Исходный DataFrame:

   Name/X     X1  X2  X3  X4
    A         10  12  33  31
    B         22  14  44  17

Выход должен быть таким:

 N   A   B
 1   10  22
 2   12  14
 3   33  44
 4   31  17

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

Автор решения: Aleksey Ptukha
d1 = {'col1': [1, 2], 'col2': [3, 4]}
df1 = pd.DataFrame(data=d1)
   col1  col2
0     1     3
1     2     4

df1_transposed = df1.T # or df1.transpose()
df1_transposed
      0  1
col1  1  2
col2  3  4

Here more detail about transpose https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.transpose.html

→ Ссылка
Автор решения: MaxU

Сначала нужно сделать UNPIVOT по столбцам "X*", превратив таблицу из широкой в высокую, а после этого сделать PIVOT, используя наименования "X*" столбцов в качестве индекса, а значения из столбца "Name/X" в качестве наименований будущих столбцов:

res = (df
      .set_index("Name/X")
      .stack()
      .reset_index()
      .pivot_table(index="level_1", columns="Name/X", values=0)
      .reset_index(drop=True)

результат:

In [243]: res
Out[243]:
Name/X   A   B
0       10  22
1       12  14
2       33  44
3       31  17

А как сделать в конечной таблице в столбце Name/X сделать не значения индекса строк, а порядковый номер строки, который соответствует номеру столбца в исходной таблице?

res = (df
       .set_index("Name/X")
       .stack()
       .reset_index()
       .pivot_table(index="level_1", columns="Name/X", values=0)
       .rename_axis(None))
res.index = res.index.str.replace(r"^\D+", "", regex=True)

результат:

In [254]: res
Out[254]:
Name/X   A   B
1       10  22
2       12  14
3       33  44
4       31  17
→ Ссылка