Don't need to sort at all, much less doing it twice over with the same criteria
Why only accept two by-values, when you could accept an arbitrary number in a set?
Your group-by criteria should be over both the year and your by-column
No need to concat, reset any indices, fillna, etc.
seaborn makes this easy
The data are garbage, slightly modified ...