我是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")
答案 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"
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")