【问题标题】:pd.qcut - ValueError: Bin edges must be uniquepd.qcut - ValueError: Bin 边缘必须是唯一的
【发布时间】:2017-01-05 00:20:55
【问题描述】:

我的数据是here

q = pd.qcut(df['loss_percent'], 10)

ValueError: Bin edges must be unique: array([ 0.38461538,  0.38461538,  0.46153846,  0.46153846,  0.53846154,
        0.53846154,  0.53846154,  0.61538462,  0.69230769,  0.76923077,  1.        ])

我已经阅读了why-use-pandas-qcut-return-valueerror,但是我仍然很困惑。

我想我的一个价值观出现的频率很高,那就是打破 qcut。

首先,步骤是我如何确定是否确实如此,以及哪个值是问题所在。最后,根据我的数据,什么样的解决方案是合适的。

【问题讨论】:

标签: python pandas binning


【解决方案1】:

使用帖子https://stackoverflow.com/a/36883735/2336654中的解决方案

def pct_rank_qcut(series, n):
    edges = pd.Series([float(i) / n for i in range(n + 1)])
    f = lambda x: (edges >= x).argmax()
    return series.rank(pct=1).apply(f)

q = pct_rank_qcut(df.loss_percent, 10)

【讨论】:

  • 所以这个解决方案仍然将数据分成相等的块(我的情况是十分位?)。如果是这种情况,那么为什么不固定 qcut 以完全按照您的解决方案执行?只是想知道......
猜你喜欢
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 2018-07-26
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多