我有两个数据框:
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/