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

标签 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 更高的层(即“上帝层”数据帧,或“一流”)。我想首先对 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 的最小 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

关于python - 首先对较高层的数据帧进行排名,然后对较低层的数据帧进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46236318/

相关文章:

python - 需要帮助编写通过数字列表找到最便宜路线的递归函数

python - 如何选择不仅仅包含 NaN 值和 0 的行

python - 如何将值添加到以其他列为条件的列

R:如何将数据框附加到列表中?

python - NUKE 表达式引用顶级相机

python - 如何使用参数在 SELECT 语句中选择一列或多列

Python 2.7 - pandas_reader 帮助

scala - 如何在 .withColumn 函数中获取列的 Integer 值? [ Spark -斯卡拉]

python - Airflow 涂胶作业

python - 如何在每个组中估算 Pandas 数据框中的一列