根据另一列对一列进行五分位数

时间:2018-12-13 22:08:54

标签: python dataframe percentile tiling

我有一个看起来像这样的数据框

re_rank_df = pd.DataFrame({'RANK':[1,2,3,4,5,6,7,8,9,10],'BINARY':[1,0,1,0,1,0,1,0,1,0]})

   RANK  BINARY
0     1       1
1     2       0
2     3       1
3     4       0
4     5       1
5     6       0
6     7       1
7     8       0
8     9       1
9    10       0

我现在想对我的等级列进行重新排名,例如,在此示例中,我想将Binary列= 1的位置加倍,所以我应该得到

   RANK  BINARY
0      4       1
1     2       0
2      2       1
3     4       0
4      3       1
5     6       0
6      0       1
7     8       0
8      1       1
9    10       0

我可以使用

re_rank_df['QUINTILE'] = pd.qcut(re_rank_df['RANK'], 5, labels=False).where(re_rank_df['BINARY'] == 1)

这给了我

   RANK  BINARY  QUINTILE
0     1       1       0.0
1     2       0       NaN
2     3       1       1.0
3     4       0       NaN
4     5       1       2.0
5     6       0       NaN
6     7       1       3.0
7     8       0       NaN
8     9       1       4.0
9    10       0       NaN

我想对Binary = 0再次做同样的事情

re_rank_df['QUINTILE'] = pd.qcut(re_rank_df['RANK'], 5, labels=False).where(re_rank_df['BINARY'] == 0)

但是将两个五分之一系列存储在一列中吗?

0 个答案:

没有答案
相关问题