#python #excel #pandas #if-statement
Вопрос:
Я пытаюсь запустить этот код с некоторыми проблемами, которые нужно решить. Сначала я пытаюсь вставить «BOD» в качестве имени вывода и «6» в качестве количества входных параметров.
import os
import numpy as np
import pandas as pd
from pandas import ExcelWriter
from numpy import *
OutputName = input('please enter the name of the output (BOD,COD,TSS)');
InputNum = input('please enter the number of input parameters (6 or 12) = ');
file_name = 'biowin_withMalfunction.xlsx'
if OutputName == 'BOD':
Output_num=1
if InputNum == 6:
Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for BOD_6Params')
print (Data)
elif InputNum ==12:
Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for BOD')
elif OutputName == 'COD':
Output_num=2
if InputNum == 6:
Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for COD_6ParamsD')
elif InputNum ==12:
Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for COD')
else:
Output_num=3
if InputNum == 6:
Data = pd.read_excel(open(r'C:UsersElisatest_conv_Fatonebiowin_withMalfunction.xlsx', 'rb'), sheet_name='ANN full data for TSS_6Params')
elif InputNum ==12:
Data = pd.read_excel(file_name, sheet_name="ANN full data for TSS")
index = Output_num -3;
X = Data[0:end-2,0:end]
ошибка в том, что:
Traceback (most recent call last):
File "C:UsersElisatest_convANN_Converted.py", line 42, in <module>
X = Data[0:end-2,0:end]
NameError: name 'Data' is not defined
Похоже, что переменные данные не создаются с помощью pd.reading, на самом деле, если я попытаюсь распечатать(данные), их не существует. Кто-нибудь может помочь мне найти проблему/проблемы?
Могу ли я поделиться входным файлом excel? Как?
Ответ №1:
Подумайте о своих условиях. Что произойдет, если каждый отдельный тест будет False
? Что произойдет, если все ваши тесты будут False
?
В вашем дереве решений есть путь, по которому файл не открывается. В настоящее время это получение, поэтому Data
его не существует, как вы определили.
В этом случае проблема, скорее всего, заключается в том, что input()
возвращается строка, в то время как вы тестируете целое число.
Таким образом, либо тест на строки:
if inputNum == "5"
или приведите inputNum к int:
inputNum = int(inputNum)
прежде чем вы проведете какое-либо тестирование.
Комментарии:
1. да, именно так. Но если я вставлю BOD в качестве имени вывода, а затем 6 в качестве номера ввода, первые условия будут выполнены, поэтому они ВЕРНЫ. Код должен считывать данные excel и печатать данные. Разве не ригт? @2e0byo
2. см. Обновленный ответ
3. хорошо…. итак, как я могу это исправить должным образом?
4. проверьте строку («5» , а не 5) или приведите к int (
inputNum = int(inputNUm)
). И вообще привыкайте использоватьtype(thing)
для проверки такого рода вещей-это может очень помочь