You can use categorical data to enable proper sorting with pd.Categorical
:
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
df['months'] = pd.Categorical(df['months'], categories=months, ordered=True)
df.sort_values(...) # same as you have now; can use inplace=True
When you specify the categories, pandas remembers the order of specification as the default sort order.
Docs: Pandas categories > sorting & order.