新的Python和不能找出“AttributeError:'NoneType'对象没有属性'to_excel'”

我是非常新的python所以帮助或解释赞赏。 我已经阅读了一些类似的问题,但还没有足够的经验来理解解决scheme。 我在Spyder中使用Python 3.6。 我想在Excel电子表格的所有其他列之前插入一列,并把date放在该列中,在这种情况下,“2010-01”。 当我运行代码时,出现错误“AttributeError:'NoneType'object has no attribute'to_excel'”。

import os import pandas as pd df = [] for f in ['C:\\file.xls']: data = pd.read_excel(f, 'dspPrintOrExcel') data.index = [os.path.basename(f)]*len(data) class Column(object): def Date(self): print ("2010-01") thing = Column() df = df.insert(0,thing.Date) df.to_excel("C:\\file2.xls") 

df.insert()不返回dataframe。 只要改变这一行:

df = df.insert(0,thing.Date)

至:

df.insert(0,thing.Date)

所以有几件事情需要改变/修正:

  • 你的语法
    df = df.insert(0,thing.Date)需要更改为df.insert(0,thing.Date)
  • 你的def Date():函数实际上并没有在代码中做任何事情。 打印语句将输出到控制台,以便您可以直观地看到它在做什么。 但是现在,当你插入的时候,它不会返回任何有用的东西。 通过添加以下内容来修复该问题
    def Date(self): print ("2010-01") return "2010-01"
  • 最后,你的代码的最后一个问题是,你正在尝试在列表中使用pandas包函数.to_excel()。 列表df没有可以运行的“.to_excel”函数。 你必须使用一个pandas数据框对象,并做到这一点,我们必须将您的列表转换为如下所示的数据框:
    pd.DataFrame(df).to_excel("C:\\file2.xls")

所以最后你的代码将如下所示:

 import os import pandas as pd df = [] for f in ['C:\\file.xls']: data = pd.read_excel(f, 'dspPrintOrExcel') data.index = [os.path.basename(f)]*len(data) class Column(object): def Date(self): print ("2010-01") # I kept your print in case you still wanted it return "2010-01" thing = Column() df.insert(0,thing.Date()) pd.DataFrame(df).to_excel("C:\\file2.xls")