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
相关产品推荐
相关产品推荐

