Ошибка имени: имя ‘res’ не определено

#python

#python

Вопрос:

Я получаю следующую ошибку:

Обратная трассировка ошибки имени (последний последний вызов) в 81 writer.save() 82 —> 83 write_excel(res) 84

Ошибка имени: имя ‘res’ не определено

Не могли бы вы помочь? 🙂

 def read_merge(file):
    """" read files and merge the data """
    
    username = pd.read_csv('file.csv', delimiter = ';')
    merged_output = pd.read_excel('file-1.xlsx')
    merged_output = pd.merge(merged_output, username, how='left', left_on=['h'], right_on=['h2'])
    merged_output = merged_output.drop(columns=['h2'])
    return(merged_output)


def remove_string(merged_output):
    """" remove rows containing strings from list_string """
    
    list_string = ["obj-1", "obj-2"]
    res = merged_output[~merged_output['Rule'].isin(list_string)]
    return res


def add_agg_columns(res):
    """"aggregate columns"""
    
    res = res.groupby('Entity_Name').agg({'Rule': ', '.join, 
                                          'Name':'first',
                                          'Area': 'first',
                                          'Summary': 'first'}).reset_index()
    
                     
def write_excel(res):
    """"Write Excel document"""
    
    writer = pd.ExcelWriter(r"C:PATHoutput.xlsx", engine = 'xlsxwriter')  
    workbook=writer.book
    worksheet=workbook.add_worksheet('SHEET')
    writer.sheets['SHEET'] = worksheet
    res.to_excel(writer, sheet_name='SHEET', startcol = 0, startrow = 0)
    
    
    writer.save()
    
write_excel(res)

  

Комментарии:

1. Вы определили функции, не используя их. def read_merge(file): не вызывает автоматически функцию с нужным файлом. return(merged_output) не передает его автоматически remove_string(merged_output) .

2. Вы определили «res» в своих элементах определения, однако, если вы видите отступы, вы используете его вне его в последней строке. Вот почему система выдает ошибку, в которой указано, что ‘res’ не определен. Если вы хотите продолжать использовать его таким образом, вам нужно объявить его глобально в самом начале кода, прежде чем начать его использовать.

Ответ №1:

Последняя строка кода write_excel(res) ссылается на переменную res , которая не определена в вашем коде.

Сообщение об ошибке NameError: name 'res' is not defined должно дать вам некоторое представление о том, что происходит