以前老踩这坑,没总结。。。。。
数据集如下:
上面age列是根据出生日期得到的年龄,我要将age连续数据离散化,改成4个年龄段的,“20~25 离散化 为数值1, 26~30 离散化为数值2, 30~35离散化为数值3 和 >35 离散化数值4 ” 的四段。修改这些数据时,需要通过行列定位再来处理, 那么就用DataFrame.loc函数,示例如下:
1 data.loc[(data.age >= 20) &(data.age < 25), 'age'] = 1 2 data.loc[(data.age >= 20) &(data.age < 25), 'age'] = 1 3 data.loc[(data.age >= 25) &(data.age < 30), 'age'] = 2 4 data.loc[(data.age >= 30) &(data.age < 35), 'age'] = 3 5 data.loc[data.age >=35,'age'] = 4
上述loc函数以DataFrame的形式定位的, 下面是help(pd.DataFrame.loc) :
那么说明 pd.DataFrame.loc方法使用过 按照标签和布尔值来访问某行/某列/具体到某个元素
# (data.age >= 20) &(data.age < 25) 以pd.DataFrame.help方式生成boolean类型的行索引, 再结合 ‘age’列来定位元素, 再通过赋值完成离散化处理 data.loc[(data.age >= 20) &(data.age < 25), 'age'] = 1