Ведение журнала ошибок Python для проверки дубликатов строк и дубликатов столбцов - PullRequest
1 голос
/ 02 октября 2019

Следующий код читает существующую электронную таблицу MS Excel, создает карту столбцов, а затем экспортирует результаты в другую электронную таблицу Excel. Лист и связанные столбцы на самом деле намного больше, но для простоты контекста я спарил количество столбцов на карте.

Вы заметите, что в процессе я создаю 2 пустых столбца и отбрасываю любыеповторяющиеся строки. Я борюсь с правильным оператором Try: Except:, который подтвердит, что я не перезаписываю существующие столбцы созданными столбцами NULL, а также проверю, не являются ли дублирующиеся строки. Я знаю, что нет, но мне нужен отчет журнала ошибок для целей аудита. Ниже приведен простой макет кода, насколько я понял. Я все еще плохо знаком с обработкой исключений и буду признателен за вашу помощь. Заранее спасибо.

from datetime import datetime
import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    handlers=[logging.StreamHandler()])

os.chdir(r'M:\Loans')

col_map = {'Loan #' : 'LoanNo',
           'Last Name' : 'LastName',
           'Purchase Price' : 'PurchasePrice',
           'Loan Amt' : 'LoanAmt',
           'Property Address' : 'PropertyAddress',
           'City' : 'City',
           'State' : 'State',
           'Zip Code' : 'ZipCode',
           'Interest Rate' : 'InterestRate',
           'UPBCurrent' : 'UPBCurrent',               
           'NextDueDateAtPurchase' : 'NextDueDateAtPurchase',
           'CurrentAdvanceRate': 'CurrentAdvanceRate',
           'Comments' : 'Comments',
           'CurrentAdvanceAmount': 'CurrentAdvanceAmount',
           'SecondRoundCurrentAdvanceRate' : 'SecRoundCurrentAdvRate', 
           'SecondRoundCurrentAvanceAmount' : 'SecRoundCurrentAdvAmount', 
           }

for f in os.listdir():

    logging.info('Reading in file {}'.format(f))

df=pd.read_excel('M:\Loans\Loan Blotter XYZ OLD.xlsx')

df['UPBCurrent'] = None
df['NextDueDateAtPurchase'] = None

df = df[col_map.keys()]
df.drop_duplicates(inplace=True)
df.columns = [col_map[col] for col in df.columns]
df['Channel'] = 'Whole Loans'
df['DateCreated'] = datetime.today().date()
df.to_excel(r'M:\Err Log.xlsx', index=False)

1 Ответ

0 голосов
/ 02 октября 2019

, чтобы убедиться, что вы не будете перезаписывать существующие столбцы:

null_cols = ['UPBCurrent', 'UPBCurrent']
for null_col in null_cols:
    if null_col in df.columns:
        logging.error("{} will be overwritten.".format(null_col))
    else:
        logging.info("Adding null column {}.".format(null_col))
        df[null_col] = None

, чтобы убедиться, что дубликаты будут работать:

try:
    df.drop_duplicates(inplace=True)
except:
    logging.error("Failed to drop duplicate rows.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...