You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于合并列对比两个DataFrame及重复行标记技术需求

实现DataFrame重复行标记及原有逻辑优化

当然可以实现这个需求,只需要在原有逻辑基础上增加对View Name、Column Name、Column Description三字段组合的匹配判断即可,具体修改方案如下:

步骤说明

  • 先从主列表df2(对应代码里的view_col_desc_df)中提取包含三个目标字段的唯一组合集合,提升查找效率
  • 修改原判断函数,优先校验当前行的三字段组合是否存在于df2的组合中,存在则标记duplicate row
  • 保留原有View、Column不存在的判断逻辑,同时修正原有代码里的漏洞(原逻辑未关联View与Column的对应关系,会导致误判)

修改后的完整代码

# 从主列表提取三字段的唯一组合,转成集合加快查找速度
df2_unique_combinations = set(view_col_desc_df[['View Name', 'Column Name', 'Column Description']]
                              .astype(str)
                              .apply(tuple, axis=1))

# 原有提取待对比数据的逻辑保留
col_desc_diff_df = cd_diff[cd_diff['_merge'] == 'left_only'][['View Name', 'Column Name', 'Column Description']]
    
selected_cols_df = view_col_desc_df[['View Name','Column Name']]
selected_cols_df1 = selected_cols_df.drop_duplicates(subset=['View Name','Column Name'])

def compare_columns_cd(row):
    # 优先判断是否为完全匹配的重复行
    current_combination = tuple(row[['View Name', 'Column Name', 'Column Description']].astype(str))
    if current_combination in df2_unique_combinations:
        return 'duplicate row'
    # 判断View是否存在
    if row['View Name'] not in selected_cols_df1['View Name'].astype(str).values:
        return 'View Not Found'
    # 关联View判断Column是否存在(修正原代码的误判问题)
    target_view_cols = selected_cols_df1[selected_cols_df1['View Name'] == row['View Name']]['Column Name'].astype(str).values
    if row['Column Name'] not in target_view_cols:
        return 'Column Not Found'
    return 'NA'

col_desc_diff_df['Reason for Diff'] = col_desc_diff_df.apply(compare_columns_cd, axis=1)

额外说明

原代码中判断Column是否存在的逻辑存在漏洞:仅单独检查Column Name是否在df2的所有Column中,未关联对应的View Name,会出现“View存在但Column属于其他View”的误判,上述代码已同步修正该问题,确保是在同一View下校验Column的存在性。

内容的提问来源于stack exchange,提问作者rose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:13:30