首先对较高层的数据框进行排名,然后对较低层的数据框进行排名

Ranking a higher tier dataframe first, and then ranking a lower tier dataframe second

我有两个数据框:

            x            y
 df1<-     1.0          5.31  
           0.9          4.22
           0.1          4.57


            x            y
 df2<-     1.3          4.71    
           0.3          4.54 

df1 可以被视为比 df2 更高的层(即 "God tier" 数据帧,或 "first class")。我想首先对 df1 的 x 列值进行排名,这很容易使用下面的代码。

输入:

df1['rank'] = df1['x'].rank(ascending=False)

输出:

            x            y          rank
 df1<-     1.0          5.31          1
           0.9          4.22          2
           0.1          4.57          3

但是,接下来的部分我在弄清楚如何做时遇到了一些困难...

然后我想对 df2 的 x 列进行排名(即 "lower tier" 数据框,或 "second class"),从 df1 的排名值继续进行,输出为:

            x            y          rank
 df2<-     1.3          4.71          4
           0.3          4.54          5

(即 df2 的最大 x 值将被排名为低于 df1 的最小 x 值 - 即使 df2 的 x 值大于 df1)。

关于如何实现这一点有什么想法吗?

我认为最简单的是在 df1 中添加 rank 的最大值:

df2['rank'] = df2['x'].rank(ascending=False) + df1['rank'].max()
print (df2)
     x     y  rank
0  1.3  4.71   4.0
1  0.3  4.54   5.0