Вы хотите использовать DataFrame.melt ():
С учетом следующего кадра данных df:
Year Month v_1 v_2
0 1901 2 4 8
1 1902 3 5 9
2 1903 4 6 10
3 1904 5 7 11
Вызов df.melt(id_vars=['Year', 'Month'], var_name='Day')
дает такой результат:
Year Month Day value
0 1901 2 v_1 4
1 1902 3 v_1 5
2 1903 4 v_1 6
3 1904 5 v_1 7
4 1901 2 v_2 8
5 1902 3 v_2 9
6 1903 4 v_2 10
7 1904 5 v_2 11
Здесь происходит то, что melt перемещает все данные из столбцов, кроме Year и Month (id_vars), в новый столбец «value», а имена столбцов (v_0, v_1 и т. Д.) Становятся новым столбцом с именем «variable»,Мы можем установить имя этого нового столбца с помощью аргумента var_name, который я установил выше для 'Day'.
На самом деле, поскольку имена столбцов дня начинаются с "v_", я бы начал с переименованияэти столбцы:
df.rename(axis='columns', mapper=lambda s: s.split('_')[-1], inplace=True)
df.melt(id_vars=['Year', 'Month'], var_name='Day')