Python 属性错误:';列表';对象没有属性';到excel';附加DF'时;列出,并将这些DF';s使用openpyxl保存到聚合文件
当我想将最终数据框保存到excel文件时,出现错误:Python 属性错误:';列表';对象没有属性';到excel';附加DF'时;列出,并将这些DF';s使用openpyxl保存到聚合文件,python,pandas,openpyxl,Python,Pandas,Openpyxl,当我想将最终数据框保存到excel文件时,出现错误: for filename in path.glob('**/*.xlsx'): [...] [... omitted code, will share, if interest exists] [...] print('Processing : ' + str(filename)) try: data = pd.read_excel(filename, sheet_name='Main Sheet', head
for filename in path.glob('**/*.xlsx'):
[...]
[... omitted code, will share, if interest exists]
[...]
print('Processing : ' + str(filename))
try:
data = pd.read_excel(filename, sheet_name='Main Sheet', header=None)
new_row = pd.DataFrame([[str(filename), str(now)]],
index=[0])
# simply concatenate both dataframes
data = pd.concat([new_row, data]).reset_index(drop=True, inplace=True)
appended_data.append(data)
appended_data = pd.concat(appended_data, sort=False, ignore_index=True)
except Exception as e:
print(e)
print('Couldn\'t process ' + str(filename) + ' ! ')
copy('C:\\Users\\**YOU**\\' + str(filename), (os.path.expanduser(
'~/') + '\\**CLOUD'))
os.remove('C:\\Users\\**YOU**\\' + str(filename))
except Exception as e:
print('Error! Error!: ' + str(e) + str(e.args))
循环后:
appended_data.to_excel('appended.xlsx')
book = load_workbook('appended2.xlsx')
writer = pd.ExcelWriter('appended2.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
startrow = writer.sheets['Sheet1'].max_row
appended_data.to_excel(writer, startrow=startrow, index=False, header=False)
writer.save()
“AttributeError:“list”对象没有“to_excel”属性
发生在最后一排的第二排。
我很困惑,因为代码在我对循环进行一些“改进”之前就已经运行了。。
如何将列表转换为数据帧?
当我尝试一个简单的
df=pd.DataFrame(附加数据)
我得到一个“所有传递的对象都没有”
一些背景信息: 数据帧如下所示: 标题
Eaten this month Ordered Self-made Eaten out
Pizza 20 5 7 8
Pasta 10 1 8 1
Sushi 5 0 N/A
Chinese 15 14 1 N/A
标题被删除,聚合数据的名称和日期被写入
附加数据(最终结果):
我走近了,我不得不用append而不是concat。我也在循环之后移动了操作
data = new_row.append(data, ignore_index=True)
appended_data.append(data)
try:
new_append = appended_data.append(data)
except:
print('Could\'nt append multiple df\'s')
try:
appended_data = pd.concat(new_append.reset_index(drop=True), sort=False, ignore_index=True, axis=1)
except:
pass
df = pd.DataFrame(appended_data)
df.to_excel('appended.xlsx')
book = load_workbook('appended2.xlsx')
writer = pd.ExcelWriter('appended2.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
startrow = writer.sheets['Sheet1'].max_row
df.to_excel(writer, startrow=startrow, index=False, header=False)
writer.save()
我还有一个问题:
最终结果中的数据帧被写入一个单元格,这似乎很奇怪。
但是从这里我想,索引可能有问题…看看附加的数据。附加(数据),我假设附加的数据是一个列表,列表没有一个到excel的
方法你打算对附加数据中的数据执行吗:…
?其思想是“附加数据=pd.concat(附加数据,排序=False,忽略索引=True)”在不需要另一个循环的情况下附加数据帧
data = new_row.append(data, ignore_index=True)
appended_data.append(data)
try:
new_append = appended_data.append(data)
except:
print('Could\'nt append multiple df\'s')
try:
appended_data = pd.concat(new_append.reset_index(drop=True), sort=False, ignore_index=True, axis=1)
except:
pass
df = pd.DataFrame(appended_data)
df.to_excel('appended.xlsx')
book = load_workbook('appended2.xlsx')
writer = pd.ExcelWriter('appended2.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
startrow = writer.sheets['Sheet1'].max_row
df.to_excel(writer, startrow=startrow, index=False, header=False)
writer.save()