Поворот к мультииндексу без явных имен уровней - PullRequest
0 голосов
/ 12 сентября 2018

Я хотел бы изменить структуру данных, чтобы иметь два уровня столбца, без указания имен подуровня.

Например, изначально мои данные выглядят так, с индексами «дата» и «продукт», а затем с некоторыми столбцами:

                    a           b
date    product             
2011-11 foo         1.          2.1 
2011-12 foo         2.432       2.3 
2012-01 bar         0.4         1.7 
2012-01 foo         0.84        1.8 
2014-06 bar         0.          2.  
2014-07 bar         1.68        3.  

Обратите внимание, что для каждой даты существует одна строка, комбинация продуктов (индекс уникален).

Я хотел бы преобразовать его в единый индекс, дату, перемещая продукт в уровни столбцов:

                     foo                   bar
                a           b        a           b
date    
2011-11         1.          2.1      NaN         NaN
2011-12         2.432       2.3      NaN         NaN
2012-01         0.84        1.8      0.4         1.7
2014-06         NaN         NaN      0.          2. 
2014-07         NaN         NaN      1.68        3. 

Я не уверен, как написать сводную таблицу, учитывая, что имена столбцов a и b не являются фиксированными, и при каждом запуске этого процесса их может быть больше или меньше.

1 Ответ

0 голосов
/ 12 сентября 2018

Использование unstack и swaplevel:

df.unstack(1).swaplevel(1,0, axis=1).sort_index(1)

product   bar         foo
            a    b      a    b
date
2011-11   NaN  NaN  1.000  2.1
2011-12   NaN  NaN  2.432  2.3
2012-01  0.40  1.7  0.840  1.8
2014-06  0.00  2.0    NaN  NaN
2014-07  1.68  3.0    NaN  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...