实现功能:
求两个时间序列的时间差值
输入: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订阅号:数据杂坛),将持续更新!
,