Создание заявления с использованием значения dataframe в python - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь сделать sql оператор CASE, используя значение dataframe. Можете ли вы помочь мне, как это сделать?

Мне нужно сделать заявление в соответствии со значениями dataframe. Не могли бы вы помочь мне?

пример:

DATAFRAME

rule_id    operator_type     input_value   output_value                     and_or_not_operator   out_expr_type
R120        =                Canada PQC    Canada Global Complaint PQC      NULL                        NULL
R120        =                PQC           US Global Complaint PQC          NULL                        NULL
R120        =                Adverse Event US Global Complaint PQC          AND                       NULL
R120        =                Canada AE     Canada Global Complaint AE       NULL                        NULL
R120        LIKE             Global Comp   NULL                             AND                         rec.recordtype_nm||'AE'
R120        =                Y             NULL                             AND                         rec.recordtype_nm||'AE'
R120        =                N             NULL                             AND                         rec.recordtype_nm||'AE' 
R120        =                Initial       NULL                             NULL                        rec.recordtype_nm||'AE'
R120        ELSE             NULL          NULL                             NULL                        NULL


Final Case Statement:

CASE WHEN  = 'Canada PQC' then 'Canada Global Complaint PQC' WHEN  = 'PQC' then 'US Global Complaint PQC' WHEN  = 'Adverse Event' AND  = 'Canada AE' then 'Canada Global Complaint AE' WHEN  LIKE '%Global Complaint%' AND  = 'Y' AND  = 'N' AND  = 'Initial' then rec.recordtype_nm||' AE ' ELSE  then REC.RECORDTYPE_NM END

Код, который я пытаюсь:

        conn = redshift_conn()
        order = 'priority_order'
        rule_id1 = "'" + rule_id + "'"
        case_stmnt = 'CASE'
        df_metadata = pd.read_csv("/medaff/Scripts/python/imedical_business_rules_metadata.txt", delimiter= '~')
        with conn.cursor() as cur:
            print('select * from medaff.imedical_business_rules_metadata where rule_id = {} order by priority_order'.format(rule_id1))
            query = ('select * from medaff.imedical_business_rules_metadata where rule_id = {} order by priority_order'.format(rule_id1))
            cur.execute(query)
            res = cur.fetchall()
            print(type(res))
            #print(res)
            column_names = [i[0] for i in cur.description]
            print(column_names)

            df = pd.DataFrame(res, columns=column_names)
            print(df)

        for index, row in df.iterrows():
            if df['priority_order'] == 1.0:
                if df['and_or_not_oprtor'] == 'NULL' and df['operator_type'] = '=':
                    case_stmnt += 'WHEN ' + "'" + row['operator_type'] + "'" + 'THEN' + "'" + row['output_value'] + "'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...