Python错误日志记录以检查重复的行和列

2024-10-03 17:21:45 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码读取现有的MS Excel电子表格,创建列映射,然后将结果导出到另一个Excel电子表格。工作表和关联的列实际上要大得多,但为了保持上下文简单,我已经配对了映射中的列数

您会注意到,在这个过程中,我创建了2个空列并删除了所有重复的行。我正在努力使用一个正确的Try:Except:语句,该语句将验证我并没有用创建的空列覆盖现有列,并验证是否没有重复行。我知道我不是,但需要错误日志报告用于审计目的。下面是一个简单的代码模型,这是我所能得到的。我对异常处理还是相当陌生的,非常感谢您的帮助。提前谢谢

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)

Tags: 代码inmapdfdatetimeloggingcol语句
1条回答
网友
1楼 · 发布于 2024-10-03 17:21:45

要检查是否不会覆盖现有COL,请执行以下操作:

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.")

相关问题 更多 >