pandas使用diff计算列差值报TypeError: string indices must be integers问题咨询
报错根本原因
你看到的TypeError: string indices must be integers和assists列的类型无关,本质是当前你代码里的df变量根本不是Pandas DataFrame对象,而是字符串类型。字符串只支持整数下标取值,你用['assists']这种字符串索引取值自然会抛出该错误。
你提到此前可以正常计算均值、标准差,说明你之前的df还是正常的DataFrame对象,大概率是后续执行了误操作把df赋值成了字符串,比如执行了df = str(df)、读文件时未做解析直接读成了字符串等。
解决步骤
- 第一步先确认
df的实际类型,执行代码:print(type(df))
如果输出为<class 'str'>,即可验证上述判断,你需要回溯之前的代码,找到把df覆盖为字符串的操作,重新生成正确的DataFrame对象。 - 确认
df是正常DataFrame后,再处理assists列的类型转换,因为列内同时存在整数和浮点数,直接统一转换为float类型即可:df['assists'] = pd.to_numeric(df['assists'], errors='coerce')
参数errors='coerce'会自动把无法转换为数字的异常值替换为NaN,避免转换过程报错。 - 类型转换完成后,再执行差值计算即可正常运行:
df['Dif'] = df['assists'].diff()
内容的提问来源于stack exchange,提问作者Lydia
相关产品推荐
相关产品推荐

