我使用python和Streamlight来比较不同列上的数据帧,基本思想是我有一个5列的复选框,我想根据选中的框调用函数“data_matching”(传递给函数的参数是复选框)
对于第一种情况,一切正常,但对于第二种情况,我得到以下错误“name‘data_merge’未定义”。 我尝试将数据合并声明为全局,但问题仍然存在。我的问题是如何解决此问题?有没有更好的方法来做到这一点,因为有很多可能涵盖(25个案例涵盖我做了数学lol)
import streamlit as st
import pandas as pd
import numpy as np
def data_matching(atm_data, hist_data, cardNUM=False, transAMT=False, terminalID=False, externalST=False, transactionDATE=False):
global data_merge
if cardNUM and transAMT and terminalID and externalST and transactionDATE:
data_merge = atm_data.merge(
hist_data, on=['CARD_NUMBER', 'TRANSACTION_AMOUNT', 'TERMINAL_ID', 'EXTERNAL_STAN', 'TRANSACTION_DATE'], how='left', indicator='Match')
if cardNUM == False and transAMT and terminalID and externalST and transactionDATE:
data_merge = atm_data.merge(
hist_data, on=['TRANSACTION_AMOUNT', 'TERMINAL_ID', 'EXTERNAL_STAN', 'TRANSACTION_DATE'], how='left', indicator='Match')
if terminalID and externalST and transactionDATE:
data_merge = atm_data.merge(
hist_data, on=['TERMINAL_ID', 'EXTERNAL_STAN', 'TRANSACTION_DATE'], how='left', indicator='Match')
if externalST and transactionDATE:
data_merge = atm_data.merge(
hist_data, on=['EXTERNAL_STAN', 'TRANSACTION_DATE'], how='left', indicator='Match')
if transactionDATE:
data_merge = atm_data.merge(
hist_data, on=['TRANSACTION_DATE'], how='left', indicator='Match')
data_merge['Match'] = data_merge['Match'] == 'both'
# create a new column Match in dataframe A and fill it from C
atm_data["Match"] = data_merge['Match']
return atm_data
if cardNUM and transAMT and terminalID and externalST and transactionDATE:
atm_data = data_matching(atm_data, hist_data, cardNUM,
transAMT, terminalID, externalST, transactionDATE)
st.write('Matching on all fields!')
st.write(atm_data)
if transAMT and terminalID and externalST and transactionDATE:
atm_data = data_matching(atm_data, hist_data,
transAMT, terminalID, externalST, transactionDATE)
st.write(
'Matching on TRANSACTION_AMOUNT, TERMINAL_ID, EXTERNAL_STAN, TRANSACTION_DATE')
st.write(atm_data)
if terminalID and externalST and transactionDATE:
st.write('Great!')
if externalST and transactionDATE:
st.write('Great!')
if transactionDATE:
st.write('Great!')
目前没有回答
相关问题 更多 >
编程相关推荐