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

如何使用pandas将CSV指定列范围内的重复值替换为空字符串

Pandas实现跨指定列范围去重、仅保留首次出现值的方案

核心逻辑

你的需求本质是跨多列按固定遍历顺序做全局值去重,不需要删除整行,只需要把非首次出现的重复值替换为空即可,不需要写复杂循环,用pandas原生的行列转换方法就能快速实现。

实现步骤

  • 选定需要处理的三列,按照「逐行从上到下读取、单行列顺序从phone1到phone3」的优先级展平为一维序列,这个顺序就是值“首次出现”的判定依据
  • 对展平后的一维序列调用duplicated()方法,自动标记所有非首次出现的重复值
  • 将标记结果还原为原三列的形状,把标记为重复的位置统一替换为空字符串,写回原数据集即可

可直接运行的代码示例

import pandas as pd

# 替换为你的CSV文件实际路径
df = pd.read_csv("input.csv")

# 配置需要做跨列去重的字段,列表顺序决定同值优先保留的位置优先级
process_columns = ["phone1", "phone2", "phone3"]

# 展平多列后标记重复值,再还原为原表结构
duplicate_mask = df[process_columns].stack().duplicated().unstack()

# 所有重复位置替换为空字符串
df[process_columns] = df[process_columns].mask(duplicate_mask, "")

# 导出处理完成的结果
df.to_csv("output.csv", index=False)

补充说明

  • 该方案默认不会将原始数据中的空值判定为重复值,避免误替换正常的空字段
  • 如果需要调整同值保留的优先级,比如优先保留phone3列的号码,只需要调整process_columns列表内的字段顺序即可
  • 处理全程不会改动非目标列(id、name)的内容,也不会删除任何数据行,完全匹配需求规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:36:29