新的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")