You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何解决处理数据库数据时遇到的TypeError: unsupported operand type(s) for /: 'str' and 'str'错误?

解决 TypeError: unsupported operand type(s) for /: 'str' and 'str'

这个错误的核心原因很明确:你试图对字符串类型的列执行除法运算,Python当然不支持字符串之间做除法操作啦!

看你的代码,虽然计算deposit时把DATA6030DATA6040转成了float,但DATA9960DATA6190这两列仍然是字符串格式(大概率是object类型),所以执行data_new3['DATA9960']/data_new3['DATA6190']时就触发了类型错误。

具体修复步骤:

  1. 先确认数据类型(可选但推荐):
    运行下面的代码,查看这两列的类型:

    print(data_new3[['DATA9960', 'DATA6190']].dtypes)
    

    如果输出是object,就说明确实是字符串类型。

  2. 将字符串列转换为数值类型
    使用pandasto_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)
    
  3. 重新执行除法计算
    现在再运行你的除法代码就不会报错了:

    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

火山引擎 最新活动