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

Python导入Excel数据及if elif语句执行报Data未定义问题求助

故障根因排查
    1. 输入参数类型不匹配(核心原因)

input() 函数返回值默认是字符串类型,你代码中判断条件写的是 InputNum == 6(整数6),当你输入数字6时,实际得到的InputNum值是字符串"6",二者判断结果为False,导致对应分支里的Data赋值逻辑根本没有执行,自然会报Data未定义的错误。

    1. 分支覆盖不全
      如果输入的OutputName不是BOD/COD/TSS,或者InputNum不是6/12,所有分支都不会给Data赋值,也会触发该错误。
    1. 后续索引语法错误
      你代码中X = Data[0:end-2,0:end]是MATLAB语法,Python中没有end关键字,pandas DataFrame也不支持直接用[行切片,列切片]的写法,修复完Data定义问题后还会触发新报错。
    1. 路径一致性问题
      代码中大部分读取逻辑用的是固定绝对路径,只有TSS的12参数分支用了相对路径的file_name变量,若执行路径和文件存放路径不一致也会读取失败。
修复代码参考
import os
import numpy as np
import pandas as pd

OutputName = input('please enter the name of the output (BOD,COD,TSS)').strip()
# 输入判断统一用字符串类型,避免类型不匹配
InputNum = input('please enter the number of input parameters (6 or 12) = ').strip()
# 统一使用绝对路径,避免相对路径适配问题
file_path = r'C:\Users\Elisa\test_conv_Fatone\biowin_withMalfunction.xlsx'
Data = None
Output_num = None

if OutputName == 'BOD':
    Output_num=1
    if InputNum == "6":
        Data = pd.read_excel(file_path, sheet_name='ANN full data for BOD_6Params')
        print(Data)
    elif InputNum == "12":
        Data = pd.read_excel(file_path, sheet_name='ANN full data for BOD')
elif OutputName == 'COD':
    Output_num=2
    if InputNum == "6":
        Data = pd.read_excel(file_path, sheet_name='ANN full data for COD_6ParamsD')
    elif InputNum == "12":
        Data = pd.read_excel(file_path, sheet_name='ANN full data for COD')
elif OutputName == 'TSS':
    Output_num=3
    if InputNum == "6":
        Data = pd.read_excel(file_path, sheet_name='ANN full data for TSS_6Params')
    elif InputNum == "12":
        Data = pd.read_excel(file_path, sheet_name="ANN full data for TSS")

# 提前校验Data是否赋值成功,定位输入错误问题
if Data is None:
    raise ValueError("输入的输出名称或参数数量不符合要求,未读取到有效数据")

index = Output_num -3
# 替换MATLAB语法为Python pandas标准写法:取除最后2行外的所有行、全部列
X = Data.iloc[:-2, :].values
Excel文件共享方案
  • 若为小范围协作排查,可将Excel文件压缩后通过即时通讯工具、企业内部网盘、邮件附件直接发送,文件过大可做分卷压缩处理。
  • 若为公开场景提问需要附文件,可删除敏感数据只保留可复现问题的样例行,上传到公共存储服务后设置公开访问权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:00:05