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

如何去除Pandas DataFrame指定列的重复值且不删除行

处理DataFrame指定列的重复值(不删除整行)

嘿,刚好碰到过类似需求,我来给你捋清楚怎么操作!你要的是只针对指定列处理重复值,保留整行但把重复的单元格内容清空对吧?用Pandas可以轻松实现,分两种常见场景给你示例:

场景1:全局范围内,指定列中重复的单元格(保留第一次出现的值)

如果是只要指定列里出现过的值,后续重复的都清空,代码如下:

import pandas as pd

# 假设你的数据集是df
target_cols = ["PLACEMENT # NAME", "IMPRESSIONS","ENGAGEMENTS","DPEENEGAGEMENTS"]

# 把指定列中重复的单元格替换为空字符串(想保留NaN就换成pd.NA)
df[target_cols] = df[target_cols].mask(df[target_cols].duplicated(), "")

代码解释:

  • df[target_cols].duplicated():返回和原DataFrame同形状的布尔数组,标记每行在指定列中是否是重复项(默认保留第一个出现的不标记)
  • mask():把布尔值为True的位置替换成你指定的内容(这里是空字符串),这样整行都保留,只有重复的单元格被清空

场景2:按某列分组后,处理其他列的重复值

如果是想按PLACEMENT # NAME分组,在每组内处理IMPRESSIONS等列的重复值——比如同一个广告位下的重复曝光数清空,那就用分组操作:

# 按PLACEMENT # NAME分组,处理其他列的重复值
group_col = "PLACEMENT # NAME"
cols_to_process = ["IMPRESSIONS","ENGAGEMENTS","DPEENEGAGEMENTS"]

for col in cols_to_process:
    df[col] = df.groupby(group_col)[col].apply(lambda x: x.mask(x.duplicated(), ""))

这样就能保证同一个广告位下,重复的曝光、互动数据只保留第一次出现的,后续重复的单元格被清空,整行完全保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:38:11