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

pandas DataFrame两列同行重复值仅清空B列对应值如何实现

Pandas 逐行清空与A列值重复的B列值解决方案

drop_duplicates() 用于删除行维度的重复记录,或删除重复列,不支持逐行判断两列相等关系做值替换,因此不符合你的使用需求。

你可以用以下两种极简方案实现需求,可直接在Google Colaboratory中运行:

完整可运行代码

1. 导入依赖并构造示例数据

import pandas as pd

df = pd.DataFrame({
    'A': ['Syd', 'Aus', 'Mir', 'Dol'],
    'B': ['Syd', 'Del', 'Ard', 'Dol']
})

2. 核心处理逻辑

两种写法逻辑等价,任选其一即可:

# 写法1:mask满足条件时替换为空字符串
df['B'] = df['B'].mask(df['A'] == df['B'], '')

# 写法2:where不满足条件时替换为空字符串
# df['B'] = df['B'].where(df['A'] != df['B'], '')

3. 结果验证

运行 print(df) 即可得到预期输出:

A    B
0  Syd     
1  Aus  Del
2  Mir  Ard
3  Dol     

补充说明

  • 如果你需要将重复值替换为空值而非空字符串,把代码里的 '' 替换为 pd.NA 即可
  • 如果不想修改原始DataFrame,处理前先执行 processed_df = df.copy(),再对 processed_df 做修改即可
  • 列中存在的缺失值不会触发相等判断,不会出现误清空的情况

内容的提问来源于stack exchange,提问作者Fendy Sion 04

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:45:01