0

I have this data frame

Risk scoring Sam   1/1  1/2   2/2  3/1  3/2  4/1
Date                                            
August             NaN  1.0   NaN  NaN  NaN  NaN
December           6.0  3.0   4.0  2.0  4.0  NaN
January            2.0  NaN   2.0  1.0  2.0  NaN
November           2.0  1.0  12.0  3.0  4.0  1.0
October           14.0  4.0  12.0  4.0  4.0  NaN
September         21.0  3.0   7.0  3.0  2.0  NaN

I want this

Risk scoring Sam   1/1  1/2   2/2  3/1  3/2  4/1
Date
January            2.0  NaN   2.0  1.0  2.0  NaN
August             NaN  1.0   NaN  NaN  NaN  NaN
September         21.0  3.0   7.0  3.0  2.0  NaN  
October           14.0  4.0  12.0  4.0  4.0  NaN
November           2.0  1.0  12.0  3.0  4.0  1.0                                     
December           6.0  3.0   4.0  2.0  4.0  NaN

I guess this has to be manually, how can I do this?

1 Answers1

0

Here is no MultiIndex, so use ordered CategoricalIndex, then correct working DataFrame.sort_index:

cats = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 
        'August', 'September', 'October', 'November', 'December']

df.index = pd.CategoricalIndex(df.index, ordered=True, categories=cats)

df = df.sort_index()

print (df)
            1/1  1/2   2/2  3/1  3/2  4/1
Date                                     
January     2.0  NaN   2.0  1.0  2.0  NaN
August      NaN  1.0   NaN  NaN  NaN  NaN
September  21.0  3.0   7.0  3.0  2.0  NaN
October    14.0  4.0  12.0  4.0  4.0  NaN
November    2.0  1.0  12.0  3.0  4.0  1.0
December    6.0  3.0   4.0  2.0  4.0  NaN
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252