Python. Pandas. Multiindex. Как перевести часть столбцов в строки-индексы?

С помощью df1 = pd.read_csv(r'C:\2022.csv', header=[0,1]) загружаю исходные данные.

Исходные данные

Подскажите как можно получить данные как во второй таблице?

Требуемый формат


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

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

В общем, в виду отсутствия воспроизводимого примера и неразберихи у автора вопроса с датами в желаемом результате, могу предложить следующее:

  1. Во-первых, при чтении из csv у вас теряется мультииндекс, поэтому работа с двойным заголовком вам не нужна.
  2. Как разберетесь с мультииндексом, можете использовать такой алгоритм:
df = pd.read_csv(r'3.csv', header=1)

res = pd.pivot_table(df, values=["Sum1", "Sum2", "Sum3"],
                     index=["Col1", "Col2", "Col3", "Col4"]).stack().reset_index()

res:

   Col1 Col2 Col3  Col4 level_4    0
0     0  bla  bla     1    Sum1  100
1     0  bla  bla     1    Sum2  200
2     0  bla  bla     1    Sum3  300
3     1  bla  bla     2    Sum1   20
4     1  bla  bla     2    Sum2   50
5     1  bla  bla     2    Sum3   30
6     2  bla  bla     3    Sum1   10
7     2  bla  bla     3    Sum2   80
8     2  bla  bla     3    Sum3   30
→ Ссылка