给出以下示例:
example = pd.DataFrame({'y':[1,1,1,1,1,1,1,1,1,1,2,2,2,2,0,0,-1,-1,-1]})
我想按频率计数按降序重新标记这些值。因此,我希望将案例数最多的值(例如 1)替换为 0,然后将下一个最大的 bin 替换为 1,依此类推所有值。需要注意的是我想忽略值为 -1 的情况。如果我运行value_counts(),我可以看到这个:
y
1 10
2 4
-1 3
0 2
dtype: int64
但我想要一个 pythonic 和非 hacky/clean 解决方案来创建以下内容:
y
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 1
11 1
12 1
13 1
14 2
15 2
16 -1
17 -1
18 -1
y
0 10
1 4
-1 3
2 2
dtype: int64
(理想情况下,我也保留旧的专栏,以便保存良好的记录)。我可以循环每个值,检查它是否不是 -1,然后value_counts()用迭代次数替换它,但这感觉维护成本很高。有没有一种干净的方法来实现它?
米脂
相关分类