python как транспонировать dataframe и создать новый индекс(столбец)

Есть такой dataframe:

   Id      Level1   Level2   Level3   Level4
0  EURUSD  1.19507  1.18701  1.20012  1.20892


**Результат хотелось бы такой:**
index  Id         EURUSD     
0      Level1     1.19507  
1      Level2     1.18701  
2      Level3     1.20012  
3      Level4     1.20892


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

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

Я сделал, но как-то сложновато получилось, наверняка можно проще:

import pandas as pd

cols = 'Id      Level1   Level2   Level3   Level4'.split()
vals = 'EURUSD  1.19507  1.18701  1.20012  1.20892'.split()

df = pd.DataFrame(dict(zip(cols,vals)), index=[0])
df = df.T.reset_index()
df_cols = df.iloc[0]
df = df[1:]
df.columns = df_cols
df

Вывод:

    Id  EURUSD
1   Level1  1.19507
2   Level2  1.18701
3   Level3  1.20012
4   Level4  1.20892

И индексация получилась с 1 при этом. Если хочется с 0, то нужно добавить df = df.reset_index(drop=True)

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

Еще один вариант:

res = df.set_index("Id").T.reset_index()

результат:

In [65]: res
Out[65]:
Id   index   EURUSD
0   Level1  1.19507
1   Level2  1.18701
2   Level3  1.20012
3   Level4  1.20892

Или так, чтобы установить правильные наименования столбцов:

res = (df
       .set_index("Id")
       .T
       .rename_axis(None, axis=1)
       .reset_index()
       .rename(columns={"index": "Id"}))

результат:

In [85]: res
Out[85]:
       Id   EURUSD
0  Level1  1.19507
1  Level2  1.18701
2  Level3  1.20012
3  Level4  1.20892
→ Ссылка