Python如何将DataFrame中的字符串颜色值映射为整数用于分类器训练
错误原因
你原代码的核心问题是循环遍历的是列内的颜色字符串值而非行索引,train['column_name'][i]是尝试用颜色值作为索引定位元素,完全不符合预期赋值逻辑。同时这种逐行循环+链式索引的写法效率极低,还容易触发pandas的SettingWithCopyWarning,存在隐性赋值失效的风险。
最优解决方案
直接调用pandas内置的map()方法完成映射,代码简洁且执行效率远高于逐行循环:
color_dict = {'red':1, 'blue':2, 'green':3} train['column_name'] = train['column_name'].map(color_dict) print(train['column_name'])
如果数据集里存在字典未收录的颜色值,可补充填充逻辑避免生成NaN值:
# 未知颜色统一赋值为0,最终转为int类型 train['column_name'] = train['column_name'].map(color_dict).fillna(0).astype(int)
原循环写法的调整方案
如果需要保留循环逻辑,可改为遍历行索引完成赋值:
color_dict = {'red':1, 'blue':2, 'green':3} for idx in train.index: train.loc[idx, 'column_name'] = color_dict[train.loc[idx, 'column_name']] print(train['column_name'])
内容的提问来源于stack exchange,提问作者a_pcgamer
相关产品推荐
相关产品推荐

