值错误:箱标签必须比熊猫"Cut()"中的箱边数少一个



我在Pandas中使用cut()对数值列的值进行分类。

df['bmi_bin']=pd.cut(df['Body Mass Index'],bins=4,labels=[0,1,2,3])

输出:

0      2
1      2
2      1
3      2
4      1
..
683    1
690    0
694    1
696    0
699    1

我试着把同样的代码放在一个循环中:

num_of_bins=4
for i in range(0,num_of_bins):
df['bmi_bin']=pd.cut(df['Body Mass Index'],bins=num_of_bins, labels=[i])

这给了我以下错误:

ValueError: Bin labels must be one fewer than the number of bin edges

我哪里做错了?标签[i]给出的标签值[0,1,2,3]小于4吗?

您的代码正试图将数据帧拆分为具有标签的不同箱子。但箱子和标签计数不匹配。在for循环中,你在不同的迭代中将数据帧分成0,1,2,3个箱子,但无论它是0,1,2还是3,每次都只有一个标签。如果你想使用循环,那么下面可以使用,但不确定你期望的输出-

num_of_bins=4
lt=[]
for i in range(0,num_of_bins):
lt.append(i)
df['bmi_bin']=pd.cut(df['Body Mass Index'],bins=i, labels=lt)

最新更新