2017-09-15 50 views
1

我有兩個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較高等級(即「神層」數據幀,或「頭等艙」)。我想先排列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列(即「下層」數據幀或「第二類」)排序,繼續從df1的等級值輸出:

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

(即,即使df2的x值大於df1,df2的最大x值也會被排列爲低於df1的最低x值。

如何可以做到這一點任何想法?

回答

1

我覺得simpliest是df1rank最大值:

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