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

如何优化DataFrame差异标记函数以提升运行效率?

优化DataFrame差异标记函数的高效实现

原函数的性能瓶颈

原函数通过Python循环逐元素修改DataFrame,这在pandas中是低效的——pandas基于向量化操作设计(底层依赖numpy的C实现),Python循环会完全绕开这个核心优势,当数据量或差异数量较大时,耗时会显著增加。

高效优化方案

利用pandas的向量化字符串操作批量处理差异位置,彻底避免Python层面的循环:

def getDiff(rows, cols, df1, df2):
    # 向量化拼接差异字符串,批量获取所有差异位置的原值和新值
    diff_strings = df1.iloc[rows, cols].astype(str) + " --> " + df2.iloc[rows, cols].astype(str)
    # 批量赋值回原DataFrame
    df1.iloc[rows, cols] = diff_strings
    return df1

优化说明

  • 所有字符串拼接操作由底层批量执行,无Python循环开销,数据量越大性能提升越明显
  • astype(str)确保非字符串类型的数值能正确拼接,和原函数的format行为保持一致
  • 兼容单个索引或序列索引(rows/cols可以是单个整数或列表)

可选:避免修改原DataFrame

如果不需要修改输入的df1,可以先复制一份再操作,避免副作用:

def getDiff(rows, cols, df1, df2):
    df_result = df1.copy()
    diff_strings = df_result.iloc[rows, cols].astype(str) + " --> " + df2.iloc[rows, cols].astype(str)
    df_result.iloc[rows, cols] = diff_strings
    return df_result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:40:29