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



我有两个dataframes:

            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更高的层(即"上帝层" dataframe或"头等舱")。我想首先对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

但是,这是我在弄清楚如何做的下一部分...

然后,

i想要对DF2的X列进行排名(即"下层"数据框或"第二类"),从DF1的等级值继续进行以下输出:

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

(即,DF2的最大X值将被排名为DF1的最低X值 - 即使DF2的X值大于DF1中的X值)。

关于如何实现这一目标的任何想法?

我认为最简单的是 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

最新更新