实现功能:
求两个时间序列的时间差值
输入:excel文件,含有两列时间格式的数据,row[13]和row[20],例如2008-4-21,1988-01-01
输出:这两列时间数据作差,求相隔的月数,例如243(个月),写入到row[21]
实现代码:
1 | from xlutils.copy import copy |
2 | import xlrd |
3 | import datetime |
4 | from xlrd import xldate_as_datetime |
5 | |
6 | def time_subtraction(file): |
7 | workbook = xlrd.open_workbook(file) |
8 | worksheet=workbook.sheet_by_index(0) |
9 | |
10 | new_workbook = copy(workbook) |
11 | new_worksheet = new_workbook.get_sheet(0) |
12 | |
13 | nrow=worksheet.nrows |
14 | |
15 | for i in range(0,nrow): |
16 | if i==0: |
17 | new_worksheet.write(i, 21, '病程') |
18 | else: |
19 | row= worksheet.row_values(i) |
20 | if row[13]!='' and row[20]!='': |
21 | d1=xldate_as_datetime(row[13],0).strftime('%Y%m') |
22 | d2=xldate_as_datetime(row[20],0).strftime('%Y%m') |
23 | print(d1,d2) |
24 | v_year_end = datetime.datetime.strptime(d1, '%Y%m').year |
25 | v_month_end = datetime.datetime.strptime(d1, '%Y%m').month |
26 | v_year_start = datetime.datetime.strptime(d2, '%Y%m').year |
27 | v_month_start = datetime.datetime.strptime(d2, '%Y%m').month |
28 | interval = (v_year_end - v_year_start) * 12 + \ |
29 | (v_month_end - v_month_start) |
30 | print('时间差(月数):%s'%interval) |
31 | new_worksheet.write(i, 21, interval) |
32 | else: |
33 | new_worksheet.write(i, 21, 'null') |
34 | new_workbook.save("F:\数据杂坛\\result\时间差.xls") |
35 | |
36 | if __name__=="__main__": |
37 | time_subtraction("F:\数据杂坛\data\患者按地区研究信息_2231 .xls") |
实现效果:
喜欢记得点赞,在看,加关注(V订阅号:数据杂坛),将持续更新!