Sort dataframe by date column stored as string
Your month column is really a partial date (i.e. the year is missing), but you could still just convert that column to a proper date format and then sort.
You will have to specify a format, so the parser knows roughly what to do. 

df["date"] = pd.to_datetime(["20-Apr"], format="%d-%b")
df.sort_values("date")   # ascending by default


Without any year information, it will add the year as 1900.



If you want to add e.g. this year, you could do the following, adding 12*20 months to the new date column:

df["fixed_date"] = df.date.apply(lambda x: pd.tseries.offsets.shift_month(x, 12*20))