Сводная таблица Pandas к датафрейму - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть сводная таблица (pt), которая выглядит следующим образом:

+---------+------------+-------+----+
|         | ZY         | z     |  y |  
+---------+------------+-------+----+
| period_s| ZONE       |       |    | 
+---------+------------+-------+----+
| 201901  | A          | 14    | 34 |
|         | B          | 232   | 9  |
|         | C          | 12    | 2  |
+---------+------------+-------+----+
| 201902  | A          | 196   | 70 |
|         | K          | 10    | 1  |
|         | D          | 313   | 99 |
+---------+------------+-------+----+

, которая пришла из кадра данных (df), используя следующий код:

pt=df.pivot_table(index=['period_s','ZONE'], columns='ZY', values='ID', aggfunc="count")

где ZYполе имеет два класса z и y.

Я пытался использовать

df = table.reset_index()

, а также

df.columns = df.columns.droplevel(0) #remove amount
df.columns.name = None               #remove categories
df = df.reset_index()

Как уже упоминалось, преобразование сводной таблицы pandas в обычный фрейм данных и вот так Преобразование сводных таблиц в фрейм данных

Я хочу иметь такой фрейм данных:

+---------+-------+------------+----------+
| period_s| ZONE  |    z       | y        |
+---------+-------+------------+----------+
|  201901 |     A | 14         |       34 |
|  201901 |     B | 232        |        9 |
|  201901 |     C | 12         |        2 |
|  201902 |     A | 196        |       70 |
|  201902 |     K | 10         |        1 |
|  201902 |     D | 313        |       99 |
+---------+-------+------------+----------+

Спасибо

1 Ответ

0 голосов
/ 20 сентября 2019

Попробуйте:

pt=pt.T.reset_index(drop=True).T.rename(columns={0:'ZONE',1:'Z',2:'Y'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...