Ошибка атрибута: объект «функция» не имеет атрибута «to_excel»

#python

Вопрос:

Я пытаюсь использовать первую функцию в 2 других функциях. Я получаю сообщение об ошибке. Вот код, который я использую.Я совсем новичок в Python, буду признателен за любую помощь.

 import pandas as pd
import numpy as np
inputFile = "File.xlsx"

def add():
     cols = ["A", "B","C"]
     df = pd.read_excel(inputFile, usecols=cols)
     df.insert(4, "D", "0")
     df.dropna(subset = ["B"], inplace=True)
     df = df.replace(np.nan, '--', regex=True)
     df.columns = df.columns.str.replace('_',' ')
     return add

def out1(df): 
     df.to_excel("output1.xlsx", index=False)
     writer = pd.ExcelWriter("output1.xlsx", engine="xlsxwriter")
     workbook  = writer.book
     df.to_excel(writer, sheet_name="Sheet1", index=False)
     ws = writer.sheets["Sheet1"]
     ws.autofilter(0, 0, df.shape[0], df.shape[1])
     writer.save()

def out2(df):
      df.to_excel("output2.xlsx", index=False)
      writer = pd.ExcelWriter("output2.xlsx", engine="xlsxwriter")
      workbook  = writer.book
      df.to_excel(writer, sheet_name="Sheet1", index=False)
      ws = writer.sheets["Sheet1"]
      ws.autofilter(0, 0, df.shape[0], df.shape[1])
      writer.save()

out1(add) 
out2(add)
 

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

1. Вы не вызываете add функцию, она должна быть out1(add())

2. И add() должно заканчиваться return df , а не return add

3. Пожалуйста, разместите обратную трассировку, чтобы легче определить неисправную линию и поток управления.

Ответ №1:

Ваша add() функция должна return df вместо return add — вы возвращаете имя функции, а не переменную, которую вы создаете, и вам также нужно вызвать add() функцию в конце — out1(add()) вместо out1(add)