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

scipy.interpolate.interp1d调用报str与float不支持<比较的TypeError排查

报错原因分析

错误的核心原因是你传入scipy.interpolate.interp1d的插值源数据存在非数值的字符串类型内容,插值过程中执行排序匹配逻辑时,字符串和浮点型数值无法进行大小比较,最终触发类型错误。

具体问题定位&解决步骤
  • 首先检查数据读入逻辑的正确性:你当前使用delimiter = ' '作为分隔符读取文本文件,如果源文件内的列是通过多个空格、制表符等空白字符分隔的,会导致pandas读取到大量空值列,甚至将数值列识别为字符串类型(object类型)。
    解决方法:将读入代码改为使用sep='\s+'参数,自动匹配任意长度的空白字符作为分隔符,示例如下:
    VLE_data = pd.read_csv('VLE data.txt', sep='\s+', header=1, usecols=usecols)
    
  • 读完数据后校验列的类型,执行print(VLE_data.dtypes)查看methyl、acetate、(1)三列的类型,如果显示为object说明确实被识别为字符串,需要手动转成数值类型:
    # 将指定列转为数值,无法转换的内容会变成NaN
    VLE_data['methyl'] = pd.to_numeric(VLE_data['methyl'], errors='coerce')
    VLE_data['acetate'] = pd.to_numeric(VLE_data['acetate'], errors='coerce')
    VLE_data['(1)'] = pd.to_numeric(VLE_data['(1)'], errors='coerce')
    # 删除包含NaN的无效行
    VLE_data = VLE_data.dropna()
    
  • 你代码中set_index('methyl')后又删除methyl行的操作也存在风险,确认你源数据的表头结构,避免残留表头字符串进入后续的数值计算环节。

内容的提问来源于stack exchange,提问作者regulatefy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:39:03