jiaozhulhh 发表于 2021-3-31 16:06:30

小白求助个问题:python保存数据到excel出错

原来论坛已经解决了部分,现在想保存数据到excel,但是一直类型出错了,想求助一下各位
数据表:
1        2        INT_OVERDUE_DATE        DT
ss        ss        20200928        20200930
sa        sa                20200930
aa        aa        20200928        20200930
aa        aa        20200528        20200930

报错信息:TypeError: can only concatenate str (not "int") to str
源代码:
import numpy as np
import pandas as pd
import xlwt
from datetime import datetime

#声明一个读写对象
excelpath=r"D:\pylearning\DG逾期测试数据.xlsx"#存放路径
writer=pd.ExcelWriter(excelpath,engine="xlsxwriter")
ori=pd.read_excel(r"D:\pylearning\DG逾期测试数据.xlsx")

#选取数据中需要的部分,先是列,后是行
data = ori.iloc

#给选取的数据列起个名字,方便后面使用
data.columns=["1","2","INT_OVERDUE_DATE","DT"]

#打印5行看看数据对不对
print(data)
print(data.index)
print("-------------------------")


#新建一个excle文件用于存放结果
workbook = xlwt.Workbook(encoding='utf-8')
booksheet=workbook.add_sheet('Sheet 1',cell_overwrite_ok=True)

#先加个表头
booksheet.write(0,0,'1')   #0行0列
booksheet.write(0,1,'INT_OVERDUE_DATE') #0行1列
booksheet.write(0,2,'逾期天数') #0行2列

cnt_row = 0
#遍历每一行
for index,cnt_row in data.iterrows():
    cnt_row = cnt_row+1
    #读取Excel表中的时间,并计算时间间隔
    stime = data.sheet1.cell(cnt_row, 2).value
    etime = data.sheet1.cell(cnt_row, 3).value
    #strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
    if stime != "" and etime != "":
      start = datetime.strptime(stime,'%Y%m%d')
      end = datetime.strptime(etime,'%Y%m%d')
      time=(end-start).days; #间隔天数
      booksheet.write(cnt_row,0,str(cnt_row['1'])) #第0列为1
      booksheet.write(cnt_row,1,str(cnt_row['2']))          #第1列为逾期日
      booksheet.write(cnt_row,2,time) #第2列为逾期天数

#保存结果文件
workbook.save('逾期31天测试输出结果.xlsx')

Daniel_Zhang 发表于 2021-3-31 18:25:49



问题在这里

你循环的里面,存储的都是字符串类型

如果你只是单纯的拼接字符串,将后面那个数字str()强制转换成 str 类型再拼接

如果字符串里面是数字,那就 int() 强制转换字符串为数字,然后相加。最后要不要转换回str类型看你自己的需求
页: [1]
查看完整版本: 小白求助个问题:python保存数据到excel出错