I have a dataframe: data = { 'group': ['2', '1', '2', '2', '2', '1'], 'interval': ['20-30', '20-30', '30-40', '10-20', '10-20', '0-10'], 'count': [3, 4, 2, 7, 5, 1], } df = pd.DataFrame(data) group interval count 2 20-30 3 1 20-30 4 2 30-40 2 2 10-20 7 2 10-20 5 1 0-10 1 I want to sort group first then interval simultaneously in ascending order which will look like this: group interval count 1 00-10 1 1 20-30 4 2 10-20 5 2 10-20 7 2 20-30 3 2 30-40 2 I know how to do this separately but how to do it simultaneously? ( df .sort_values(by = ['group'], key = lambda s: s.str[0:].astype(int)) .sort_values(by = ['interval'], key = lambda s: s.str[:2].astype(int)) .reset_index(drop=True) ) Continue reading...