Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Преобразование таблицы (UNPIVOT) в Pandas

#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", "...":"..."})...

Комментариев нет:

Отправить комментарий