TypeError:+不支持的操作数类型:“工作表”和“ int”

该错误表明我在'Worksheet'和'Int'之间有类型错误,无法确定+号错误在哪里。我正在从网站上提取一组数据,然后将其放入数据框。我试图每天将数据附加到相同的Excel工作表中。我已经删除了创建数据框“ df”的部分。我已经验证数据可以正确输入,只是没有按需添加到Excel。

错误:

**文件“ C:\ Users \ djrad \ Anaconda3 \ lib \ site-packages \ pandas \ io \ excel_openpyxl.py”,行414,位于write_cells中 row = startrow + cell.row + 1,column = startcol + cell.col +1

TypeError:+:“工作表”和“ int” **不支持的操作数类型

from urllib.request import urlopen as uo
from bs4 import BeautifulSoup as bs
import pandas as pd
import xlrd as xl 
from xlutils.copy import copy
import datetime as dt
from openpyxl import load_workbook as lw

   Excelpath= (r'C:\Users\djrad\Desktop\Market Rent Data\Rent_Outputs_Master.xlsx')

#Step 6: Builds DataFrame with designated headers and output lists.    
df= pd.DataFrame({'Street Address': outputstreetlist,'City': outputcitylist,'State': outputstatelist,'Zipcode': outputzipcodelist,'Price': outputpricelist,'SqFt': outputsqftlist,'Date': today.strftime('%m/%d/%Y')})

print (Excelpath)
print (df)
print ('Opening Excel')
book= lw(Excelpath)
writer= pd.ExcelWriter(Excelpath,engine= 'openpyxl')
writer.book= book
start= book['Rental List']
writer.sheets= dict((ws.title,ws) for ws in book.worksheets)

ws= book['Rental List']

for row in ws.rows:
   values= [cell.value for cell in row]
   if not any (values):
       start= row[0].row-1
       break

 df.to_excel(writer,sheet_name= 'Rental List',startrow= start,index= False,header= True)

 print ('Saving to Excel')

 try:
     writer.save()
 except:
     print('The file is open elsewhere,please close it')
n6977014 回答:TypeError:+不支持的操作数类型:“工作表”和“ int”

错误来自熊猫内部。最可能的原因是您的代码的这一行:

df.to_excel(writer,sheet_name= 'Rental List',startrow= start,index= False,header= True)

可能会在内部调用write_cells

write_cells row=startrow + cell.row + 1,column=startcol + cell.col + 1

此处最有可能的罪魁祸首是您以start的形式提供的startrow = start值。

获取print(type(start))后再试-将代码更改为:

for start,row in enumerate(ws.rows,1):  # 1-based row-count in pyxl?
   if not all(cell.value == None for cell in row):
       break

获取第一行非空行。


如果枚举不适用于ws.rows(应该),请使用

start = 1 # cols/rows are 1 based in pyxl? else use 0
for row in ws.rows:
   if not all(cell.value == None for cell in row):
       break
   start += 1
本文链接:https://www.f2er.com/2755723.html

大家都在问