我正在尝试在单个列上使用qcut
。这是专栏:
data['Frequency'].head()
0 5
1 5
2 89
3 2
4 1
5 1
6 86
7 1
8 64
9 2
但是当我尝试这个时:
data['Frequency_Score'] = pd.qcut(data['Frequency'],5,labels=[1,2,3,4,5],duplicates='drop')`
我收到错误:
ValueError: Bin labels must be one fewer than the number of bin edges
我已经尝试过使用和不使用duplicates='drop'
参数。两者都会给出错误。
我该如何解决这个问题?
最佳答案
当您使用duplicates="drop"
时,实际生成的垃圾箱数量可能不再与您想要的垃圾箱边缘计数相同。
由于您明确声明了 5 个标签并最终得到了 4 个垃圾箱,因此您会收到该错误。
不要明确指定标签:
>>> import pandas as pd
>>> df = pd.DataFrame({"Frequency": [ 5, 5, 89, 2, 1, 1, 86, 1, 64, 2, ]})
>>> pd.qcut(df["Frequency"], 5, duplicates="drop")
0 (2.0, 5.0]
1 (2.0, 5.0]
2 (68.4, 89.0]
3 (0.999, 2.0]
4 (0.999, 2.0]
5 (0.999, 2.0]
6 (68.4, 89.0]
7 (0.999, 2.0]
8 (5.0, 68.4]
9 (0.999, 2.0]
Name: Frequency, dtype: category
Categories (4, interval[float64]): [(0.999, 2.0] < (2.0, 5.0] < (5.0, 68.4] < (68.4, 89.0]]
>>>
关于python - Pandas qcut错误: Bin labels must be one fewer than the number of bin edges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63031258/