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

时间:2017-09-15 09:31:38

标签: python pandas dataframe python-3.6

我有两个数据帧:

            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更高的等级(即&#34;上帝等级&#34;数据帧,或&#34;头等等&#34;)。我想首先对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列进行排名(即&#34;较低层&#34;数据帧,或&#34;第二类&#34;),继续从df1的等级值给出输出:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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