Мультииндекс на один горячий вектор в пандах - PullRequest
2 голосов
/ 24 сентября 2019

У меня есть мультииндексный фрейм данных, подобный этому

                    bill
    City   Month    
    3          01        14586
               02        14316
               03        17261
               04        16642
               05        14977
               06        14237
               07        14486
               08        14216
               09        17461
               10        16742
               11        14677
               12        14637

    4          01        24586
               02        24316
               03        27261
               04        26642
               05        24977
               06        24337
               07        24486
               08        24216
               09        27461
               10        26742
               11        24677
               12        24637

, который я получаю из этой строки кода df = df.groupby(['City', 'Month']).sum()

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

     City   M1 M2 M3 ... M12   bill     
     3       1 0   0     0       46
     3       0 1   0     0       64
     3       0 0   1     0       386
    ...      
     4       1 0   0     0       546
     4       0 1   0     0       686 
    ...

Числа не совпадают, но я думаю, что идея ясна.Моя цель - bill и Month функции для модели ML

1 Ответ

3 голосов
/ 24 сентября 2019

Сначала преобразуйте MultiIndex в столбцы по DataFrame.reset_index, затем используйте get_dummies и последний для последнего столбца bill переназначить столбец по DataFrame.pop:

df = df.reset_index()

df = pd.get_dummies(df, columns=['Month'], prefix='M', prefix_sep='')
df['bill'] = df.pop('bill')
print (df)
  City  M01  M02  M03  M04  M05  M06   bill
0    3    1    0    0    0    0    0  14586
1    3    0    1    0    0    0    0  14316
2    3    0    0    1    0    0    0  17261
3    3    0    0    0    1    0    0  16642
4    3    0    0    0    0    1    0  14977
5    3    0    0    0    0    0    1  14337
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...