You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CASE_STATUS字段数值映射报错:如何正确实现字符串转数值映射?

解决CASE_STATUS字段数值映射的错误问题

你的问题出在循环的写法上——for dataset in df并不是遍历DataFrame对象,而是在遍历df的列名字符串!所以当你尝试用dataset['CASE_STATUS']时,本质是在对一个字符串做索引,自然会抛出"string indices must be integers, not str"的错误。

正确的做法(不需要循环)

直接对原DataFrame的CASE_STATUS列执行映射操作即可,因为df本身就是你要处理的数据集对象:

# 直接映射并转换为整数类型
df['CASE_STATUS'] = df['CASE_STATUS'].map(
    {'CERTIFIED': 1, 'CERTIFIED-WITHDRAWN': 1, 'DENIED': 0}
).astype(int)

额外优化:处理未匹配的取值

如果你的数据集里可能存在CASE_STATUS的其他未列出的取值,map会把这些值转为NaN,这时候可以用fillna填充默认值,或者改用replace方法(未匹配的值会保留原内容,也可以指定填充值):

# 使用replace,同时处理未匹配值(比如填充为-1)
df['CASE_STATUS'] = df['CASE_STATUS'].replace(
    {'CERTIFIED': 1, 'CERTIFIED-WITHDRAWN': 1, 'DENIED': 0},
    default=-1
).astype(int)

为什么原来的循环会报错?

在Pandas中,直接遍历DataFrame(for x in df)时,迭代的是DataFrame的列标签(也就是字符串类型的列名),而不是DataFrame的行或者整个数据集。所以你的dataset变量其实是一个个列名字符串,比如"CASE_STATUS",这时候用字符串去索引字符串(dataset['CASE_STATUS'])当然不符合语法规则,就会触发错误。

内容的提问来源于stack exchange,提问作者Tony Z.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:28:37