|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原来论坛已经解决了部分,现在想保存数据到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[0:,0:4]
#给选取的数据列起个名字,方便后面使用
data.columns=["1","2","INT_OVERDUE_DATE","DT"]
#打印5行看看数据对不对
print(data[0:3])
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')
问题在这里
你循环的里面,存储的都是字符串类型
如果你只是单纯的拼接字符串,将后面那个数字str()强制转换成 str 类型再拼接
如果字符串里面是数字,那就 int() 强制转换字符串为数字,然后相加。最后要不要转换回str类型看你自己的需求
|
|