我试图在单列上使用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'
参数。两者都给出错误。
我该如何解决?
答案 0 :(得分:0)
使用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]]
>>>