导入库
import pandas as pd
准备数据框
a=pd.DataFrame({"x":[0.12,0.2,0.5,0.6],"y":[0.2,0.3,0.3,0.5]})
生成变量分箱字典
dic1={"x":[0,0.1,0.3,1],"y":[0,0.2,0.5,1]}
将分箱后的变量存为原来的名字上加上后缀1
a["x1"]=pd.cut(a.x,dic1["x"],labels=[1,2,3] )
上面的代码也可以写成下面这样
a["x1"]=pd.cut(a["x"],dic1["x"],labels=[1,2,3] )
#需要注意的是0,0.1,0.3,1是四个数(四个边缘),能表示3个区间,所以label只能是3个。
#如果label给定5个的话就会出现如下错误提示
ValueError: Bin labels must be one fewer than the number of bin edges
翻译成中文:箱子标签必须比箱子边缘的数量少一个,需要注意的是这里的fewer是少的意思
计算后的正确结果如下: