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

如何更高效移除DataFrame列中相同值、保留差异值?

高效替换指定列相同值为空格的方法

直接用pandas的矢量化操作替代循环迭代,效率会提升很多,尤其在数据量较大时效果明显。假设合并后的res数据表中,你需要对比的是成对的对应列(比如us_col和gb_col这类一一对应的列),可以按以下方式处理:

方法1:使用pandas内置where方法批量处理

先定义需要对比的列对,再通过where方法保留差异值、替换相同值为空格:

# 定义要对比的列对(根据你的实际列名修改)
column_pairs = [('us_col1', 'gb_col1'), ('us_col2', 'gb_col2')]

for us_col, gb_col in column_pairs:
    # 两列值不同时保留原内容,相同时替换为空格
    res[us_col] = res[us_col].where(res[us_col] != res[gb_col], '')
    res[gb_col] = res[gb_col].where(res[us_col] != res[gb_col], '')

方法2:借助numpy.where实现相同逻辑

如果更习惯用numpy的语法,也可以用以下写法,性能和pandas的where方法基本一致:

import numpy as np

for us_col, gb_col in column_pairs:
    res[us_col] = np.where(res[us_col] != res[gb_col], res[us_col], '')
    res[gb_col] = np.where(res[us_col] != res[gb_col], res[gb_col], '')

性能优势说明

  • pandas和numpy的矢量化操作是基于底层C语言实现的,避免了Python层面逐行循环的开销,数据量越大,对比循环迭代的速度提升越显著(数据量上万级时,速度能提升几十甚至上百倍)。
  • 逐行循环的方式在数据量增大后会出现明显的性能瓶颈,矢量化操作能最大化利用CPU的批量处理能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:15:39