考虑以下数据:

s = pd.Series([1, 1, 1, 2])
pd.qcut(s, 2, labels=False)

我想得到等价群,即[0, 0, 1, 1]相反,qcut可以引发异常或返回[0, 0, 0, 0](取决于重复的Kwarg)。
我通过稍微干扰数据得到了等价群,即:
def my_qcut(s, *args, **kwargs):
    disturbed = np.array(s) + np.random.rand(len(s)) / 1000
    return pd.qcut(disturbed, *args, **kwargs)

虽然看起来很管用,但我觉得这太老套了有人能给我建议一下,如何确定地分裂成等概率群吗?

最佳答案

尝试:

pd.qcut(s.rank(method='first'), 2, labels=np.arange(2))

关于python - 强制将qcut拆分为等概率的组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52058260/

10-09 16:45