вернуть все переменные одновременно - PullRequest
0 голосов
/ 20 января 2020

эй, я работаю над проверкой данных и хочу сравнить несколько переменных условий регулярных выражений, если все удовлетворяет моим текущим кодам, выглядит следующим образом

def upload_file():
    if request.method == 'POST':
        print(request.files['file'])
        f = request.files['file']
        data_xls = pd.read_excel(f)
        df2 = data_xls.reset_index()
        name_filter = df2[df2['Pensioner Name'].str.match('^[a-zA-Z\s\.]*$')]
        cnic_filter = df2[df2['CNIC'].str.match('^[\'][0-9+]{5}-[0-9+]{7}-[0-9]{1}[\']$')]
        wallet_filter = df2[df2['Wallet Account No'].astype(str).str.contains('^[0-9+]{8}$')]
        mobile_filter = df2[df2['Mobile Number'].astype(str).str.contains('^[3+][0-9+]{9}$')]
     return name_filter.to_html() 

как я могу вернуть все переменные одновременно, проверяя все регулярные выражения сейчас его единственное возвращение name_filter

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Я попробовал это, и это работает для меня. Хотя условие не было выполнено. Это все еще работает.

import pandas as pd

df2 = pd.DataFrame(
    {'Pensioner Name' : ['CHANESER','CHANESERS'],
     'CNIC' : ['41207-0800205-9','41207-0800205-9'],
     'Wallet Account No' : ['BDS00229','BDS00229'],
     'MobileNumber' : ['3203501312','3203501312']
     }
)



if df2[df2['Pensioner Name'].str.match('^[a-zA-Z\s\.]*$')].equals(df2['Pensioner Name']) and \
df2[df2['CNIC'].str.match('^[\'][0-9+]{5}-[0-9+]{7}-[0-9]{1}[\']$')].equals(df2['CNIC'])and \
df2[df2['Wallet Account No'].astype(str).str.contains('^[0-9+]{8}$')].equals(df2['Wallet Account No'].astype(str)) and \
df2[df2['Mobile Number'].astype(str).contains('^[3+][0-9+]{9}$')].equals(df2['Mobile Number'].astype(str)):
    print("works!")
else:
    print("not works!")
0 голосов
/ 20 января 2020

По сути, вы проверяете не один результат, а все результаты и отфильтровывает их.

Предполагается, что вы хотите, чтобы все результаты прошли и были истинными, и случай, когда все они верны.

# COMPARE IF THE SAME DATASETS ARE PRESENT, EVEN AFTER PASSING ALL THE CONDITIONS AS TRUE
if df2[df2['Pensioner Name'].str.match('^[a-zA-Z\s\.]*$'].equals(df2['Pensioner Name'])     and df2[df2['CNIC'].str.match('^[\'][0-9+]{5}-[0-9+]{7}-[0-9]{1}[\']$'].equals(df2['CNIC'])     and df[df2['Wallet Account No'].astype(str).str.contains('^[0-9+]{8}$'].equals(df2['Wallet Account No'].astype(str)) and  df2[df2['Mobile Number'].astype(str).contains('^[3+][0-9+]{9}$')].equals(df2[['Mobile Number'].astype(str)):
    return df2.to_html()
else:
    return '''<h2> Error in data </h2>'''

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...