python自动实现LIS核心SQL功能需求描述
需求背景:检索Oracle数据库的数据过程中,有些检验指标需要检索出来并且以每个患者每次就诊的细项指标以列的形式展现结果,SQL执行后检索出的数据效果如下:
SQL核心语句部分:
目标:现在想用python程序实现该核心部分的自动生成功能,省去人工辛苦。规则如下:
利用python读txt格式文cf.txt件中每一行,第一列名称相同的归为一类,把第二列的值累计,第三列的值不用管,拼接成一个max(case … when… end)语句,直道最后一行结束。生成的文件另存为一个文件,文件名称问result.txt。比如ALP这个指标,生成的效果为 max(case b.testid when '0340' then b.testresult when '0008' then
b.testresult end) as "ALP",
cf.tx文件格式如图(列之间空格分开)
代码如下
import os
import pandas as pd
df=pd.read_excel('testID - 副本.xlsx')
def f(x):
try:
t="max(case b.testid "
for j in x.values:
t=t+'when \''+str(j[1])+'\' then b.testresult '
return t+" end) as "+'\''+x.iloc[0][0]+'\''
# return "max(case b.testid when '0340' then b.testresult when '0008' then b.testresult end) as "+x.iloc[0][0]
except:
return '错误'
print(df.groupby('ENGLISHNAME').apply(f))