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

将student_grade_str中字符串转为int时出现KeyError:0的解决方法

错误原因与修复方法

1. 错误解析

  • KeyError: 0:student_grade_str是pandas的DataFrame对象,用student_grade_str[i]的方式会去查找列名为i的列,而非第i行数据。你的数据中不存在列名为0的列,因此触发KeyError。
  • map(int())的语法错误:map()的第一个参数需要传入函数对象,你写的int()是执行int函数(返回0),正确写法是直接传int。

2. 修复方案

方案一:修正循环逻辑(逐行处理)

若坚持用循环处理,需用iloc[i]获取第i行数据,同时修正map的用法:

import pandas as pd 
from google.colab import drive

drive.mount('/content/drive')
student_grade_str = pd.read_csv('/content/drive/MyDrive/student_power_research.csv')      
student_grade_int = []
for i in range(len(student_grade_str)):
    # 用iloc[i]获取第i行,转为列表后批量转int
    row_int = list(map(int, student_grade_str.iloc[i].tolist()))
    student_grade_int.append(row_int)

方案二:高效批量转换(推荐)

pandas内置astype()方法可批量转换数据类型,无需手动循环,效率更高:

import pandas as pd 
from google.colab import drive

drive.mount('/content/drive')
student_grade_str = pd.read_csv('/content/drive/MyDrive/student_power_research.csv')      
# 转换整个DataFrame的所有列为int类型
student_grade_int = student_grade_str.astype(int)

# 若仅需转换特定列(比如列名为"grade"),可指定列:
# student_grade_int = student_grade_str["grade"].astype(int)

异常处理补充

如果数据中存在无法转换为int的内容(如空值、字母),可通过errors参数处理:

# 无法转换的内容会被转为NaN
student_grade_int = student_grade_str.astype(int, errors='coerce')
# 或忽略无法转换的列/行
# student_grade_int = student_grade_str.astype(int, errors='ignore')

内容的提问来源于stack exchange,提问作者侯凌群

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:15:43