#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
должно дать вам некоторое представление о том, что происходит