如何用更Pythonic的方法检查账户历史表最后一行是否在有效账户表中?
更Pythonic的实现方案
获取账户历史表的最后一条记录:
last_acct = dfAcctHist.iloc[-1]整行匹配检查(匹配所有列):
# 判断最后一条记录是否存在于有效账户表中 record_exists = (dfWorking == last_acct).all(axis=1).any()关键列匹配(推荐,避免非关键列差异导致误判):
如果业务上只需要匹配特定关键列(比如账号ID、客户号等),先定义关键列列表再做匹配:# 定义业务关键匹配列 key_columns = ["account_no", "customer_id"] last_acct_keys = last_acct[key_columns] # 检查关键列是否匹配 record_exists = (dfWorking[key_columns] == last_acct_keys).all(axis=1).any()
代码解释
dfWorking == last_acct:逐元素对比有效账户表和最后一条记录的对应值,生成布尔型DataFrame.all(axis=1):对每行的布尔值做逻辑与,只有整行(或指定关键列)所有值都匹配时返回True.any():检查是否存在至少一行匹配结果,最终返回True(存在)或False(不存在)
如果需要提取具体匹配的行,可以直接用布尔索引筛选:
matching_records = dfWorking[(dfWorking[key_columns] == last_acct_keys).all(axis=1)]
内容的提问来源于stack exchange,提问作者Mick Hawkes
相关产品推荐
相关产品推荐

