我的数据是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。
首先,步骤是如何确定是否确实如此,以及哪个值是问题。最后,根据我的数据,什么样的解决方案是合适的。
答案 0 :(得分:2)
使用帖子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)