Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和can';“我不明白”;属性错误:';非类型';对象没有属性';到excel'&引用;_Python_Excel_Pandas - Fatal编程技术网

Python和can';“我不明白”;属性错误:';非类型';对象没有属性';到excel'&引用;

Python和can';“我不明白”;属性错误:';非类型';对象没有属性';到excel'&引用;,python,excel,pandas,Python,Excel,Pandas,我对python非常陌生,因此非常感谢您的帮助或解释。我读过一些类似的问题,但还没有足够的经验来理解解决方案。我正在Spyder中使用Python 3.6。我试图在excel电子表格的所有其他列之前插入一列,并在该列中输入日期,在本例中为“2010-01”。当我运行代码时,我得到错误“AttributeError:'NoneType'对象没有属性'to_excel'” df.insert()未返回数据帧。只需更改这一行: df=df.insert(0,thing.Date) 致: df.inse

我对python非常陌生,因此非常感谢您的帮助或解释。我读过一些类似的问题,但还没有足够的经验来理解解决方案。我正在Spyder中使用Python 3.6。我试图在excel电子表格的所有其他列之前插入一列,并在该列中输入日期,在本例中为“2010-01”。当我运行代码时,我得到错误“AttributeError:'NoneType'对象没有属性'to_excel'”

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

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

致:

df.insert(0,thing.Date)
df.insert()
没有返回数据帧。只需更改这一行:

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日期(self):
    打印(“2010-01”)
    返回“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")

因此,有几件事需要改变/修复:


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

您的
类的目的是什么?您的
类的目的是什么?使用这些更改,我不再遇到以前的错误,但当我打开文件时,它创建的唯一内容是单元格B2中的“2010-01”,其他所有内容都为空。我想保留原始数据,但将所有现有单元格向右移动一列,并将“2010-01”放在新空白列的每一行中。我上传文件的方式是否有问题?使用这些更改,我不再遇到以前的错误,但当我打开文件时,它创建的唯一内容是单元格B2中的“2010-01”,其他内容均为空白。我想保留原始数据,但将所有现有单元格向右移动一列,并将“2010-01”放在新空白列的每一行中。我上传文件的方式有问题吗?