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

如何高效删除Pandas DataFrame中匹配另一DataFrame链接的单元格

高效处理Pandas DataFrame中已完成调研链接的置空操作

核心思路

不用遍历单元格,通过宽表转长表的方式批量处理匹配,再转回宽表,利用Pandas的矢量化操作提升效率。

具体实现步骤

假设信息表名为info_df,结果表名为done_df:

  1. 提取并转换web相关列到长格式
    先筛选出所有webName和webURL列,将多组列转成成对的行,保留Person和ID作为标识列:

    import pandas as pd
    
    # 提取所有webName和webURL列
    web_name_cols = [col for col in info_df.columns if col.startswith('webName')]
    web_url_cols = [col for col in info_df.columns if col.startswith('webURL')]
    
    # 把每组webName和webURL转成长表
    long_df = pd.DataFrame()
    for name_col, url_col in zip(web_name_cols, web_url_cols):
        temp = info_df[['Person', 'ID', name_col, url_col]].rename(
            columns={name_col: 'webName', url_col: 'webURL'}
        )
        long_df = pd.concat([long_df, temp], ignore_index=True)
    
  2. 批量标记并置空已完成的链接
    把结果表的链接转成集合(查找效率更高),用矢量化操作匹配并置空对应字段:

    # 生成已完成链接的集合
    done_links = set(done_df['link'])
    
    # 匹配并置空对应名称和链接
    mask = long_df['webURL'].isin(done_links)
    long_df.loc[mask, ['webName', 'webURL']] = None
    
  3. 转回宽表并整理列顺序
    给长表的每组web字段添加序号,再转回宽表,最后恢复原表的列顺序:

    # 给每个Person-ID组合的web条目添加序号
    long_df['web_num'] = long_df.groupby(['Person', 'ID']).cumcount() + 1
    
    # 转回宽表
    wide_name_df = long_df.pivot(index=['Person', 'ID'], columns='web_num', values='webName').add_prefix('webName')
    wide_url_df = long_df.pivot(index=['Person', 'ID'], columns='web_num', values='webURL').add_prefix('webURL')
    
    # 合并并重置索引
    result_df = pd.concat([wide_name_df, wide_url_df], axis=1).reset_index()
    
    # 整理列顺序,保持Person、ID在前,按webName1/webURL1、webName2/webURL2的顺序排列
    sorted_cols = ['Person', 'ID']
    for num in range(1, len(web_name_cols)+1):
        sorted_cols.extend([f'webName{num}', f'webURL{num}'])
    result_df = result_df[sorted_cols]
    

关键优势

  • 全程用Pandas矢量化操作和集合查找,比遍历单元格效率高几个数量级,适配大数据量场景
  • 自动处理不同人员链接数量差异的情况,转长表统一处理后转回宽表,自动补全空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:22:38