Group and find all values that belong to n unique maximum values
You can find unique values for each group, get the list with three max values and select rows which are in this list:
df.groupby('Input')['Font'].\
apply(lambda x: x[x.isin(np.sort(x.unique())[-3:])]).\
reset_index(level=0)
Output:
Input Font
6 132426 50
7 132426 50
8 132426 50
9 132426 38
10 132426 38
11 132426 30
12 132426 30
0 133217 30
1 133217 25
2 133217 25
3 133217 21