处理的需求是:对一个表格中,相同 问诊id 的数据进行合并:
1. 对话内容整理成,一人一句对话的方式
2.合并H列和I列,用 一个患者的最后结束问诊时间 减去 最初发起问诊的时间 , 计算出一个患者的总问诊时间
3.将处理结果,放到sheet2中, 并 保存为 另一个excel ,"result.xlsx"
二、代码实现使用 python的 openpyxl 库 处理excel表格; 使用datetime库,进行时间计算。
import openpyxl import datetime #计算时长 def subtime(date1,date2): date1=datetime.datetime.strptime(date1, "%Y-%m-%d %H:%M:%S") date2=datetime.datetime.strptime(date2, "%Y-%m-%d %H:%M:%S") return date2-date1 wb = openpyxl.load_workbook('11.6—11.10问诊对话.xlsm') sheet = wb['11.6—11.10问诊对话(1)'] sheet2 = wb['Sheet2'] rows = sheet.max_row columns = sheet.max_column #制作结果表的 首行表头 for col in range(1, columns+1): if col<=7: sheet2.cell(1, col).value = sheet.cell(1, col).value if col==8: sheet2.cell(1, col).value ="问诊时间" if col==9: sheet2.cell(1, col).value ="对话内容" #目标表 :计算问诊时间 合并对话 consult_id = None consult_time = None start_time = None end_time = None string_value = '' new_row = 2 fist_time = 1 #记录首个问诊ID last_consult_id = sheet.cell(2, 1).value for row in range(2, rows+1): consult_id = sheet.cell(row, 1).value if consult_id != None: # 如果是新的问诊id if consult_id != last_consult_id: fist_time = 1 # 重置 first_time的值 sheet2.cell(new_row, 9).value = string_value # 计算问诊时间,存入到的第8列 if end_time!= None and start_time!= None: consult_time = subtime(start_time, end_time) sheet2.cell(new_row, 8).value = consult_time new_row = new_row + 1 # 新开一行写信息 string_value ='' for col in range(1, columns+1): if consult_id != None: #写入 前七列 信息 if fist_time==1 and col<=7: sheet2.cell(new_row, col).value = sheet.cell(row, col).value #print(sheet.cell(row, col).value, col) #发起问诊的时间 if col==8 and fist_time == 1: if sheet.cell(row, col).value: start_time = str(sheet.cell(row, col).value) else: start_time = None #结束问诊的时间 if col == 9: if sheet.cell(row, col).value: end_time = str(sheet.cell(row, col).value) else: end_time = None #写入对话内容 if col == 10: string_value = str(string_value) + str(sheet.cell(row, col).value) + ":" if col == 11: string_value = string_value + str(sheet.cell(row, col).value) + "n" fist_time = fist_time + 1 last_consult_id = consult_id wb.save('result.xlsx')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)