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

如何基于单列多唯一值移除Pandas DataFrame重复行及指定行

Pandas 按条件删行+去重实现方案

核心操作拆解

你需要完成两个核心任务:

  1. 删除所有a列值为2的行
  2. 删除所有b列值为35的行
  3. 基于单列(或多列)唯一值移除重复行

代码实现

先构造示例数据,再按步骤处理:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame()
df['a'] = [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3]
df['b'] = [34,34,35,35,35,23,23,23,35,35,89,89,89,78,78]

# 第一步:过滤不符合条件的行
# 同时满足「a≠2」和「b≠35」两个条件
filtered_df = df[(df['a'] != 2) & (df['b'] != 35)]

# 第二步:移除重复行
# 场景1:基于所有列去重(整行完全重复才删除)
final_df = filtered_df.drop_duplicates()

# 场景2:仅基于a列去重(保留每个a值的首次出现行)
# final_df = filtered_df.drop_duplicates(subset='a')

结果展示

  • 基于所有列去重的结果:
ab
134
389
378
  • 仅基于a列去重的结果:
ab
134
389

扩展到多列场景

如果实际有多个类似b的列(比如b1、b2),需要删除这些列中任意一列值为35的行,可以用以下代码:

# 指定需要检查的列集合
check_cols = ['b', 'b1', 'b2']
# 过滤条件:a≠2,且所有检查列的值都不等于35
filtered_df = df[(df['a'] != 2) & (~df[check_cols].eq(35).any(axis=1))]
# 执行去重
final_df = filtered_df.drop_duplicates()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:50:19