2014-01-07 30 views
0

是否有任何条件会使得熊猫数据帧函数rank返回一个整数和浮点数的混合数的返回值,或者输出总是保证为1 ... N个整数?熊猫排名函数产生非整数?

+0

从文档字符串:'定义:df.rank(个体,轴= 0,numeric_only =无,方法= '平均',na_option = '保持',上升= True) Docstring: 计算数值数据沿轴排序(1到n)。等于 分配的排名是这些值的排名的平均值 ',因此不一定如果您有多个具有相同值的项目。 – TomAugspurger

+0

@TomAugspurger:所以答案是否定的,它不能是浮动吗? – user248237dfsf

+0

可以有浮游物。在'df = pd.DataFrame({“a”:[1,2,3,3,4,5]})上检查'df.rank()'' – TomAugspurger

回答

6

As @TomAugspurger表示。如果它们是重复的,它们可以是非整数。 (但无论如何都是float64 dtype)。

In [7]: DataFrame({'A' : Series([1,2,3,4]), 'B' : Series([1,1,1,1]) }).rank() 
Out[7]: 
    A B 
0 1 2.5 
1 2 2.5 
2 3 2.5 
3 4 2.5 

[4 rows x 2 columns] 

In [8]: DataFrame({'A' : Series([1,2,3,4]), 'B' : Series([1,1,1,1]) }).rank().dtypes 
Out[8]: 
A float64 
B float64 
dtype: object 

若干秩选项

In [12]: DataFrame({'A' : Series([1,2,3,4]), 'B' : Series([1,1,1,1]) }).rank(method='min') 
Out[12]: 
    A B 
0 1 1 
1 2 1 
2 3 1 
3 4 1 

[4 rows x 2 columns] 

In [13]: DataFrame({'A' : Series([1,2,3,4]), 'B' : Series([1,1,1,1]) }).rank(method='max') 
Out[13]: 
    A B 
0 1 4 
1 2 4 
2 3 4 
3 4 4 

[4 rows x 2 columns] 

In [14]: DataFrame({'A' : Series([1,2,3,4]), 'B' : Series([1,1,1,1]) }).rank(method='first') 
Out[14]: 
    A B 
0 1 1 
1 2 2 
2 3 3 
3 4 4 

[4 rows x 2 columns]