【发布时间】:2016-11-13 12:44:02
【问题描述】:
我正在使用 Pandas 的 Qcut 来将我的数据离散化为大小相等的存储桶。我想要价格桶。 这是我的数据框:
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. ])**
实际上,我有一个包含 7413 行的 DataFrame。所以这只是真实 DataFrame 的一个样本。奇怪的是,当我对具有 359824 行的 DataFrame 使用相同的代码时,使用几乎相同的数据,它可以工作! DataFrame 的长度是否有任何依赖性?
请帮忙!非常感谢。
【问题讨论】:
-
如果您对 df 列进行排序,它是否有效?
df['PriceBucket'] = pd.qcut(df['sell_prix'].sort_values(), 3) -
在较小的数据框中,“sell_prix”中没有足够的唯一值,无法将范围分成 3 个存储桶。因此,第一个和中间桶的端点是相同的,这就是您收到错误的原因
标签: python arrays pandas dataframe