Я использую Qcut из Pandas, чтобы дискретировать свои данные в ведрах равного размера. Я хочу иметь ведра цен. Это мой DataFrame:Qcut Pandas: ValueError: края кромок должны быть уникальными
productId sell_prix categ popularity
11997 16758760.0 28.75 50 524137.0
11998 16758760.0 28.75 50 166795.0
13154 16782105.0 24.60 50 126890.5
13761 16790082.0 65.00 50 245437.0
13762 16790082.0 65.00 50 245242.0
15355 16792720.0 29.00 50 360219.0
15356 16792720.0 29.00 50 360100.0
15357 16792720.0 29.00 50 360027.0
15358 16792720.0 29.00 50 462850.0
15367 16792728.0 29.00 50 193030.5
И это мой код:
df['PriceBucket'] = pd.qcut(df['sell_prix'], 3)
У меня есть сообщение об ошибке:
**ValueError: Bin edges must be unique: array([ 24.6, 29. , 29. , 65. ])**
На самом деле, у меня есть DataFrame с 7413 строками. Таким образом, это всего лишь выборка реального DataFrame. Странно то, что когда я использую тот же код с DataFrame с 359824 строками, с практически теми же данными, он работает! Есть ли зависимость от длины DataFrame?
Помогите пожалуйста! Большое спасибо.
если вы отсортируете столбец df, это сработает? 'df ['PriceBucket'] = pd.qcut (df ['sell_prix']. sort_values (), 3)' – EdChum
не хватает уникальных значений в 'sell_prix' в вашей меньшей части данных, чтобы разбить диапазон на 3 ковши. Следовательно, конечные точки первого и среднего ведер совпадают, поэтому вы получаете ошибку – Fortunato
См. Http://stackoverflow.com/questions/20158597/how-to-qcut-with-non-unique-bin-edges ? rq = 1 – dukebody