#python #pandas #dataframe #unpivot
При преобразовании таблиц с Росстата столкнулся с проблемой. Как с pandas на python расформировать сводную таблицу в плоскую преобразовать полученные таблицы вида: data.csv: ;;Jan 2018 I;Jan 2019 II;Feb 2018 I;Feb 2019 II 48;Lip;12.0;14.0;16.0;12.0 47;Len;0.0;0.7;0.5;0.2 50;Mos;43.0;45.0;38.8;36.4 в такой вид:
Ответы
Ответ 1
Воспользуйтесь DataFrame.stack(): Читаем данные: In [6]: df = pd.read_csv(r"D:\download\data.csv", sep=";", index_col=[0,1]) In [7]: df Out[7]: Jan 2018 I Jan 2019 II Feb 2018 I Feb 2019 II 48 Lip 12.0 14.0 16.0 12.0 47 Len 0.0 0.7 0.5 0.2 50 Mos 43.0 45.0 38.8 36.4 Решение: In [8]: df.stack() Out[8]: 48 Lip Jan 2018 I 12.0 Jan 2019 II 14.0 Feb 2018 I 16.0 Feb 2019 II 12.0 47 Len Jan 2018 I 0.0 Jan 2019 II 0.7 Feb 2018 I 0.5 Feb 2019 II 0.2 50 Mos Jan 2018 I 43.0 Jan 2019 II 45.0 Feb 2018 I 38.8 Feb 2019 II 36.4 dtype: float64 Решение (без мульти-индекса): In [9]: df.stack().reset_index() Out[9]: level_0 level_1 level_2 0 0 48 Lip Jan 2018 I 12.0 1 48 Lip Jan 2019 II 14.0 2 48 Lip Feb 2018 I 16.0 3 48 Lip Feb 2019 II 12.0 4 47 Len Jan 2018 I 0.0 5 47 Len Jan 2019 II 0.7 6 47 Len Feb 2018 I 0.5 7 47 Len Feb 2019 II 0.2 8 50 Mos Jan 2018 I 43.0 9 50 Mos Jan 2019 II 45.0 10 50 Mos Feb 2018 I 38.8 11 50 Mos Feb 2019 II 36.4 PS переименовать столбцы можно воспользовавшись DataFrame.rename(columns={"col1_name":"new_name1", "...":"..."})...
Комментариев нет:
Отправить комментарий