Мультииндексировать пандас с данными из столбца - PullRequest
2 голосов
/ 11 октября 2019

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

column1   column2   column3   column4
P1        D1        T1        1.0
P1        D1        T2        2.0
P1        D2        T1        3.0
P1        D2        T2        4.0
P2        D1        T1        5.0
P2        D1        T2        6.0
P2        D2        T1        7.0
P2        D2        T2        8.0

И я хотел бы многоиндексировать столбцы по значению в column2 и column3. Это должно выглядеть так

column1   column4
          D1                  D2
          T1        T2        T1        T2
P1        1.0       2.0       3.0       4.0
P2        5.0       6.0       7.0       8.0

1 Ответ

1 голос
/ 11 октября 2019

Я полагаю, вам нужно DataFrame.set_index с Series.unstack:

df = df.set_index(['column1','column2','column3'])['column4'].unstack([1,2])
print (df)
column2   D1        D2     
column3   T1   T2   T1   T2
column1                    
P1       1.0  2.0  3.0  4.0
P2       5.0  6.0  7.0  8.0

При необходимости верхний уровень MultiIndex с помощью column4 удалить column4 и использовать DataFrame.unstack:

df = df.set_index(['column1','column2','column3']).unstack([1,2])
print (df)
        column4               
column2      D1        D2     
column3      T1   T2   T1   T2
column1                       
P1          1.0  2.0  3.0  4.0
P2          5.0  6.0  7.0  8.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...