如何对数据进行排名,但对相等的数据进行相同的排名

时间:2018-12-03 23:56:28

标签: python pandas csv rank

我每天的最高温度是csv。我正在尝试为我的数据分配一个“等级”。首先,我将每天的最高温度从最低到最高进行了排序。然后,我创建了一个名为rank的新列。

#Sort data smallest to largest
ValidFullData_Sorted=ValidFullData.sort_values(by="TMAX")
#count total obs
n=ValidFullData_Sorted.shape[0]
#add a numbered column 1-> n to use in return calculation for rank
ValidFullData_Sorted.insert(0,'rank',range(1,1+n))

对于相同的每日最高温度值,如何使等级相同? (即,每天最高温度达到95°时,每个实例的等级都应该相同)

以下是一些示例数据:(它的每日温度数据,因此它的长度为数千行)

Date    TMAX  TMIN
1/1/00  22    11
1/2/00  26    12
1/3/00  29    14
1/4/00  42    7
1/5/00  42    21

我想添加一个看起来像这样的TMAXrank列:

Date    TMAX  TMIN  TMAXRank
1/1/00  22    11    4
1/2/00  26    12    3
1/3/00  29    14    2
1/4/00  42    7     1
1/5/00  42    21    1

1 个答案:

答案 0 :(得分:0)

ValidFullData['TMAXRank'] = ValidFullData[ValidFullData['TMAX'] < 95]['TMAX'].rank(ascending=False, method='dense')

输出:

    Unnamed: 0  TMAX  TMIN  TMAXRank
17          17    88    14       1.0
16          16    76    12       2.0
15          15    72    11       3.0
14          14    64    21       4.0
8            8    62     7       5.0
7            7    58    14       6.0
13          13    58     7       6.0
18          18    55     7       7.0
3            3    42     7       8.0
4            4    42    21       8.0
6            6    41    12       9.0
12          12    37    14      10.0
5            5    36    11      11.0
2            2    29    14      12.0
1            1    26    12      13.0
0            0    22    11      14.0
9            9    98    21       NaN
10          10   112    11       NaN
11          11    98    12       NaN
19          19    95    21       NaN