Yes, there are. One alternative is to use the .loc[] accessor and pass in a sorted list of index labels, like so: df.loc[df.index.sort_values()]. Another alternative is to use the .iloc[] accessor and pass in a sorted list of integer positions, like so: df.iloc[df.index.argsort()]