The behavior of these methods differs in confusing ways:
DF:
- DataFrame.sort_index takes a by parameter, in which case the index is resorted by a specific column's values
- DataFrame.sort defaults to inplace=False
- DataFrame.order does not exist
Series:
- Series.sort defaults to inplace=True
- Series.order defaults to inplace=False, but is otherwise identical to Series.sort
- Series.sort_index does not take a by parameter
This makes it very hard to remember which one to use, especially after an aggregating function. For example:
df.max(axis=1).order(ascending=False) # max returns a Series in this case, use Series methods
df.max(level='Foo').sort_index(by='Bar') # max returns a DF in this case, use DF methods
Any reason not to make the inplace behavior identical for DataFrame.sort and Series.sort? Also, Series.sort_index could take by=0 to replicate the behavior of DataFrame.
Comment From: jreback
see #9816 and others for discussion