Currently you are sorting in reverse alphabetical order: so 'F' comes before '2' which comes before '1'. Changing ascending to True will place 'Fix' at the bottom.
It's a bit of a hack, but you could pull out the rows where the first character is number of sort them separately...
import pandas as pd
df = pd.DataFrame(['Fix', '1Ax','2Ax','2Ax','1Ax','Fix'], columns=['name'])
# Sort alphabetically
df = df.sort_values(by=['name'],ignore_index=True,ascending=True)
# Get first character of string
first_digit = df['name'].str[0]
# Get cases where first character is (not) a number
starts_with_digits = df[first_digit.str.isdigit()]
not_starts_with_digits = df[~first_digit.str.isdigit()]
# Switch order of row with first character which start with number/not a number
pd.concat([not_starts_with_digits, starts_with_digits]).reset_index(drop=True)