pandas DataFrame排名不正确

时间:2014-04-10 23:21:11

标签: python pandas

我有两行的pandas DataFrame,我试图排名。两行中的一行排名正确,但另一行不是:

import pandas as pd

df = pd.DataFrame([
                   ['47', '196', '82', '-7', '72', '-38', '27', '53', '103', '25', '-61', '-41', '59', '-11'], 
                   ['324', '304', '296', '274', '264', '249', '227', '226', '213', '199', '196', '177', '174', '157']
                  ])

print df 
print df.rank(ascending=False, axis=1)

输出:

 0    1    2    3    4    5    6    7    8    9    10   11   12   13
 0   47  196   82   -7   72  -38   27   53  103   25  -61  -41   59  -11
 1  324  304  296  274  264  249  227  226  213  199  196  177  174  157


 0   1   2   3   4   5   6   7   8   9   10  11  12  13
 0   5   8   1  10   2  13   6   4   9   7  11  12   3  14
 1   1   2   3   4   5   6   7   8   9  10  11  12  13  14

第1行正确排名从最高到最低,但第0行显然不是。我误解了熊猫排名方法,还是我做错了什么?非常感谢

编辑:我的值是字符串而不是整数,因此排名不正确。问题解决了,谢谢所有

2 个答案:

答案 0 :(得分:2)

可能是因为你使用str声明而不是int。试试这个,

df = pd.DataFrame([ [47, 196, 82, -7, 72, -38, 27, 53, 103, 25,-61, -41, 59, -11], 
                   [324, 304, 296, 274, 264, 249, 227, 226, 213, 199, 196, 177, 174, 157]])
print (df )
print (df.rank(ascending=False, axis=1))

这将产生,

    0    1    2    3    4    5    6    7    8    9    10   11   12   13
0   47  196   82   -7   72  -38   27   53  103   25  -61  -41   59  -11
1  324  304  296  274  264  249  227  226  213  199  196  177  174  157

[2 rows x 14 columns]
   0   1   2   3   4   5   6   7   8   9   10  11  12  13
0   7   1   3  10   4  12   8   6   2   9  14  13   5  11
1   1   2   3   4   5   6   7   8   9  10  11  12  13  14

[2 rows x 14 columns]

答案 1 :(得分:1)

d'哦。我的值是字符串而不是整数...