如何基于df_2最高版本校验df_1中my_id的完整性?
正确处理流程
1. 锁定每个(scope, date)的最高版本记录
先算出每个scope和date组合对应的最大version值,再通过关联把df_2中属于这个最高版本的所有记录筛选出来:
# 计算每个分组的最高版本 max_version_df = df_2.groupby(['scope', 'date'])['version'].max().reset_index() # 筛选出最高版本对应的所有记录 latest_version_records = df_2.merge(max_version_df, on=['scope', 'date', 'version'], how='inner')
2. 检查最高版本记录的完整性
用左反连接对比筛选后的最高版本记录和df_1,找出那些在最新版本里但没出现在df_1中的my_id,这些就是缺失的数据:
# 左反连接找缺失记录 missing_ids = latest_version_records.merge( df_1[['my_id']], on='my_id', how='left', indicator=True ) missing_ids = missing_ids[missing_ids['_merge'] == 'left_only'].drop('_merge', axis=1) # 输出缺失的记录 print(missing_ids)
运行这段代码后,missing_ids里就会显示所有在对应scope+date的最高版本中存在,但df_1里没有的记录,帮你快速定位数据缺失情况。
内容的提问来源于stack exchange,提问作者johnnydoe
相关产品推荐
相关产品推荐

