Sort a pandas Series by the index
There is only 1 'column' of values. The first 'column' is the index. Docs are here
In [8]: s = Series([3,2,1],index=[1,3,2])
In [9]: s
Out[9]:
1 3
3 2
2 1
dtype: int64
Sort by the index
In [10]: s.sort_index()
Out[10]:
1 3
2 1
3 2
dtype: int64
Sort by values
In [11]: s.sort_values()
Out[11]:
2 1
3 2
1 3
dtype: int64
You need to convert your index to an object index, because it's currently sorting lexicographically, not numerically:
In [97]: s = read_clipboard(header=None)
In [98]: news = s.rename(columns=lambda x: ['Region', 'data'][x])
In [99]: news
Out[99]:
Region data
0 0 8
1 1 25
2 11 1
3 2 41
4 3 23
5 4 15
6 5 35
7 6 24
8 7 27
9 8 50
10 9 55
11 N 10
In [100]: news_converted = news.convert_objects(convert_numeric=True)
In [101]: news_converted
Out[101]:
Region data
0 0 8
1 1 25
2 11 1
3 2 41
4 3 23
5 4 15
6 5 35
7 6 24
8 7 27
9 8 50
10 9 55
11 NaN 10
In [102]: news_converted.loc[11, 'Region'] = 'N'
In [103]: news_converted_with_index = news_converted.set_index('Region')
In [104]: news_converted_with_index
Out[104]:
data
Region
0.0 8
1.0 25
11.0 1
2.0 41
3.0 23
4.0 15
5.0 35
6.0 24
7.0 27
8.0 50
9.0 55
N 10
In [105]: news_converted_with_index.sort_index()
Out[105]:
data
Region
0.0 8
1.0 25
2.0 41
3.0 23
4.0 15
5.0 35
6.0 24
7.0 27
8.0 50
9.0 55
11.0 1
N 10
There's most likely a better way to create your Series
so that it doesn't mix index types.
You are looking for sort_index:
In [80]: b.sort_values()
Out[80]:
6 1
11 2
9 2
1 4
10 4
2 5
3 6
4 7
8 8
5 9
dtype: int64
In [81]: b.sort_index()
Out[81]:
1 4
2 5
3 6
4 7
5 9
6 1
8 8
9 2
10 4
11 2
dtype: int64