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