Python制作日度余额波动报告时周末无数据取数为空问题咨询
日度余额波动报告非业务日空数据问题修复方案
原有固定取前一天日期的逻辑在周一、节假日后运行时,会取到无业务数据的日期,导致后续取数结果为空,可通过以下两种方案解决:
方案1:仅跳过周末场景
修改日期计算规则,周一运行时自动取上周五的日期:
import datetime today = datetime.datetime.today() # weekday返回值:0=周一、1=周二...4=周五、5=周六、6=周日 if today.weekday() == 0: # 周一取3天前的周五 offset = 3 else: offset = 1 previous_date = (today - datetime.timedelta(days=offset)).strftime('%Y%m%d')
该方案仅能解决周末问题,法定节假日场景仍会出现空数据。
方案2:适配所有非业务日场景(推荐)
不从系统时间硬算目标日期,直接从已经合并的全量业务数据中提取存在的最新两个业务日期作为对比周期,彻底规避无数据问题:
# 提取所有去重后的业务日期,按降序排序 sorted_dates = sorted(df1['BAS_DT'].unique(), reverse=True) # 次新日期为对比基准日,最新日期为当期日 previous_date = sorted_dates[1] current_date = sorted_dates[0] # 按提取到的有效日期取数 df2 = df1[df1['BAS_DT'] == previous_date] df3 = df1[df1['BAS_DT'] == current_date]
该方案不需要额外维护节假日清单,只要合并后的全量数据包含正常业务日的记录,就可以正常运行,兼容性更强。如果需要兼容数据不足的场景,可以额外增加判断逻辑:if len(sorted_dates) < 2: print('数据不足两个业务周期,无法生成对比报告')
内容的提问来源于stack exchange,提问作者hoa tran
相关产品推荐
相关产品推荐

