Multindex转换为大熊猫中的一种热媒

时间:2019-09-24 08:31:49

标签: python pandas

我有一个这样的多索引数据框

                    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 
    ...

数字不匹配,但我认为想法很明确。我的目标是billMonth是ML模型的功能

1 个答案:

答案 0 :(得分:3)

首先通过DataFrame.reset_indexMultiIndex转换为列,然后使用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