如何解决处理数据库数据时遇到的TypeError: unsupported operand type(s) for /: 'str' and 'str'错误?
解决 TypeError: unsupported operand type(s) for /: 'str' and 'str'
这个错误的核心原因很明确:你试图对字符串类型的列执行除法运算,Python当然不支持字符串之间做除法操作啦!
看你的代码,虽然计算deposit时把DATA6030、DATA6040转成了float,但DATA9960和DATA6190这两列仍然是字符串格式(大概率是object类型),所以执行data_new3['DATA9960']/data_new3['DATA6190']时就触发了类型错误。
具体修复步骤:
先确认数据类型(可选但推荐):
运行下面的代码,查看这两列的类型:print(data_new3[['DATA9960', 'DATA6190']].dtypes)如果输出是
object,就说明确实是字符串类型。将字符串列转换为数值类型:
使用pandas的to_numeric()方法把这两列转成float,同时处理可能存在的非数值异常值(比如脏数据):# 转换DATA9960和DATA6190为数值类型,无法转换的设为NaN data_new3['DATA9960'] = pd.to_numeric(data_new3['DATA9960'], errors='coerce') data_new3['DATA6190'] = pd.to_numeric(data_new3['DATA6190'], errors='coerce') # (可选)如果转换后出现新的NaN,可以再次清理空值 data_new3.dropna(subset=['DATA9960', 'DATA6190'], inplace=True)重新执行除法计算:
现在再运行你的除法代码就不会报错了:data_new3['WFR'] = data_new3['DATA9960'] / data_new3['DATA6190'] data_new3['DR'] = data_new3['deposit'] / data_new3['DATA6190']
额外提醒:
以后处理数值计算前,最好先检查所有参与运算的列的数据类型,避免类似的类型错误。如果你的数据源(比如数据库导出的文件)经常把数值存成字符串,建议在读取数据时就指定列类型,比如用pd.read_csv(..., dtype={'DATA9960': float, 'DATA6190': float})。
内容的提问来源于stack exchange,提问作者Marzieh Karimi




