如何从DataFrame的排名方法

时间:2016-10-25 20:50:00

标签: python pandas dataframe

用相应的“等级”替换数字:

import pandas as pd
import numpy as np

numbers = np.random.random_integers(low=0.0, high=10000.0, size=(1000,)) 
df = pd.DataFrame({'a': numbers})
df['a_rank'] = df['a'].rank()

我将浮点值作为rank方法的默认输出类型:

987     82.0
988     36.5
989    526.0
990    219.0
991    957.0
992    819.5
993    787.5
994    513.0

而不是floats我宁愿拥有整数。使用float舍入生成的asType(int)值会有风险,因为转换为int可能会导致float值彼此过于接近的重复值,例如{ {1}}和3.5。转换为整数的那些将导致整数值4.0

有没有办法引导4方法输出整数?

3 个答案:

答案 0 :(得分:2)

传递参数if(!isset($_GET['id'])) { die(); } $ID = (int)$_GET['id']; $myfile = fopen("test1.txt", "a") or die(); $txt = $ID . " - " .time() . "\n"; fwrite($myfile, $txt); fclose($myfile); ,这会使各组之间的排名增加method='dense',请参阅docs

1

答案 1 :(得分:0)

上述解决方案不适用于我。以下确实可以工作。进行编辑的关键行是:

df['a_rank'] = df['a'].rank(method='dense').astype(int);

这可能是版本问题。

答案 2 :(得分:0)

无需使用 method='dense',只需转换为整数即可。

df['a_rank'] = df['a'].rank().astype(int)