pandas排序和排名

根据条件对数据进行排序(sorting)是一种重要的内置运算。要对行或者列进行排序(按字典顺序),可使用sort_index方法,它将返回一个已排序的新对象。

frame= DataFrame(np.arange(8).reshape(2,4),
				index=['one','two'],columns=[list('dabc')])
frame
Out[5]: 
     d  a  b  c
one  0  1  2  3
two  4  5  6  7

frame.sort_index()
Out[9]: 
     d  a  b  c
one  4  5  6  7
two  0  1  2  3

frame.sort_index(axis=1)
Out[11]: 
     a  b  c  d
two  1  2  3  0
one  5  6  7  4

frame.sort_index(axis=1,ascending=False)#反向排序
Out[12]: 
     d  c  b  a
two  0  3  2  1
one  4  7  6  5

给by赋值,根据一个或者多个行列的值来排序

f2 = DataFrame({'b':[4,7,-3,2],'a':[0,1,0,1]})
f2
Out[55]: 
   b  a
0  4  0
1  7  1
2 -3  0
3  2  1


f2.sort_index(by='b')
__main__:1: FutureWarning: by argument to sort_index is deprecated,
 please use .sort_values(by=...)
Out[59]: 
   b  a
2 -3  0
3  2  1
0  4  0
1  7  1

#系统建议使用.sort_values(by=...
f2.sort_values(by='b')
Out[60]: 
   b  a
2 -3  0
3  2  1
0  4  0
1  7  1

多列进行排序,由优先级

f2.sort_values(by=['a','b'])
Out[61]: 
   b  a
2 -3  0
0  4  0
3  2  1
1  7  1

f2.sort_values(by=['b','a'])
Out[62]: 
   b  a
2 -3  0
3  2  1
0  4  0
1  7  1

行进行排序

f2.sort_values(by=[1],axis=1)
Out[64]: 
   a  b
0  0  4
1  1  7
2  0 -3
3  1  2

f2.sort_values(by=[1,2],axis=1)
Out[65]: 
   a  b
0  0  4
1  1  7
2  0 -3
3  1  2

排名rank()

obj
Out[66]: 
0    7
1   -5
2    7
3    4
4    2
5    0
6    4
dtype: int64
method说明
‘average’默认:在想等分组中,为各个值分配平均排名
‘min’使用整个分组的最小排名
‘max’使用整个分组的最大排名
‘first’按值在原始数据中出现的顺序排名
obj.rank()
Out[67]: 
0    6.5
1    1.0
2    6.5
3    4.5
4    3.0
5    2.0
6    4.5
dtype: float64
obj.rank(method='min')
Out[69]: 
0    6.0
1    1.0
2    6.0
3    4.0
4    3.0
5    2.0
6    4.0
dtype: float64
obj.rank(method='max')
Out[70]: 
0    7.0
1    1.0
2    7.0
3    5.0
4    3.0
5    2.0
6    5.0
dtype: float64
obj.rank(method='first',ascending=False)
Out[71]: 
0    1.0
1    7.0
2    2.0
3    3.0
4    5.0
5    6.0
6    4.0
dtype: float64

同理,DataFrame 也可以在行列上进行排名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值