Python的新手,无法弄清楚"属性错误:' NoneType'对象没有属性' to_excel'"

时间:2017-05-10 19:18:08

标签: python excel pandas

我是python的新手,所以感谢帮助或解释。我已经阅读了一些类似的问题,但还没有足够的经验来理解解决方案。我在Spyder中使用Python 3.6。我试图在excel电子表格中的所有其他列之前插入一列,并将日期放在该列中,在这种情况下" 2010-01"。当我运行代码时,我得到了错误" AttributeError:' NoneType'对象没有属性' 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")

2 个答案:

答案 0 :(得分:2)

df.insert()未返回数据帧。只需更改此行:

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

为:

df.insert(0,thing.Date)

答案 1 :(得分:1)

所以有一些事情需要改变/修复:

  • 你的语法  df = df.insert(0,thing.Date)需要更改为df.insert(0,thing.Date)
  • 您的def Date():函数实际上没有在代码中执行任何操作。 print语句将输出到控制台,以便您可以直观地看到它正在做什么。但是现在它在你进行插入时没有返回任何可用的东西。通过添加以下内容来解决此问题:
       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")