首先对较高层的数据框进行排名,然后对较低层的数据框进行排名
Ranking a higher tier dataframe first, and then ranking a lower tier dataframe second
我有两个数据框:
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 更高的层(即 "God tier" 数据帧,或 "first class")。我想首先对 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 列进行排名(即 "lower tier" 数据框,或 "second class"),从 df1 的排名值继续进行,输出为:
x y rank
df2<- 1.3 4.71 4
0.3 4.54 5
(即 df2 的最大 x 值将被排名为低于 df1 的最小 x 值 - 即使 df2 的 x 值大于 df1)。
关于如何实现这一点有什么想法吗?
我认为最简单的是在 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
我有两个数据框:
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 更高的层(即 "God tier" 数据帧,或 "first class")。我想首先对 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 列进行排名(即 "lower tier" 数据框,或 "second class"),从 df1 的排名值继续进行,输出为:
x y rank
df2<- 1.3 4.71 4
0.3 4.54 5
(即 df2 的最大 x 值将被排名为低于 df1 的最小 x 值 - 即使 df2 的 x 值大于 df1)。
关于如何实现这一点有什么想法吗?
我认为最简单的是在 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