python中drop_duplicates()函数的具体使用
一、基础语法
# DataFrame 使用
df.drop_duplicates(
subset=None,
keep="first",
inplace=False,
ignore_index=False
)
# Series 使用(用法一致)
s.drop_duplicates(keep="first", inplace=False)参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
subset | 指定检查重复的列名或列名列表 | None(所有列) |
keep | 保留哪个重复值:'first'/'last'/False | 'first' |
inplace | 是否原地修改 | False |
ignore_index | 是否重置索引 | False |
二、4 个核心参数(必看)
这是理解这个函数的关键,每个参数都有明确用途:
1.subset:指定判断重复的列
- 默认值:
None→ 整行所有列都相同才算重复 - 用法:传入列名列表,比如
subset=["姓名", "年龄"]→ 只有这两列都相同才判定为重复
2.keep:保留哪一行
keep="first"(默认):保留第一次出现的行,删除后面重复的keep="last":保留最后一次出现的行,删除前面重复的keep=False:把所有重复行全部删除,一条都不留
3.inplace:是否直接修改原数据
inplace=False(默认):返回一个新的 DataFrame,原数据不变inplace=True:直接在原数据上删除重复行,不返回新对象
4.ignore_index:是否重置索引
ignore_index=False(默认):删除后保留原来的索引ignore_index=True:删除后重置索引为 0,1,2...
三、最直观的示例(一看就懂)
先创建一个带重复数据的 DataFrame:
import pandas as pd
data = {
"姓名": ["小明", "小红", "小明", "小明", "小红"],
"科目": ["数学", "语文", "数学", "英语", "语文"],
"分数": [90, 85, 90, 88, 85]
}
df = pd.DataFrame(data)
print(df)输出:
姓名 科目 分数
0 小明 数学 90
1 小红 语文 85
2 小明 数学 90 ← 重复行
3 小明 英语 88
4 小红 语文 85 ← 重复行
示例 1:默认用法(整行重复才删,保留第一次)
df_new = df.drop_duplicates() print(df_new)
结果:行 0、1、3、4 保留,行 2 删除。
示例 2:只按某几列判断重复
# 只要【姓名+科目】重复就算重复 df_new = df.drop_duplicates(subset=["姓名", "科目"])
示例 3:保留最后一次出现的重复行
df_new = df.drop_duplicates(keep="last")
示例 4:彻底删除所有重复行(一条不留)
df_new = df.drop_duplicates(keep=False)
示例 5:直接修改原数据 + 重置索引
df.drop_duplicates(inplace=True, ignore_index=True)
四、高频实用场景总结
整表去重
df.drop_duplicates()
按关键字段去重(最常用)
df.drop_duplicates(subset=["ID", "订单号"])
保留最新数据
df.drop_duplicates(subset=["用户ID"], keep="last")
找出所有完全唯一的数据
df.drop_duplicates(keep=False)
五、重要注意事项
- 区分 drop_duplicates() 和 unique()
- drop_duplicates() → 返回DataFrame
- unique() → 返回一维数组(numpy array)
- 空值 NaN 会被视为相同值两行都有 NaN,会被判定为重复
- 不修改原数据(默认)想直接覆盖原数据必须加 inplace=True
总结
drop_duplicates() 就是 pandas 去重神器,核心记住 4 点:
- subset 定判断重复的列
- keep 定保留哪条重复数据
- inplace 定是否改原数据
- ignore_index 定是否重置索引
到此这篇关于python中drop_duplicates()函数的具体使用的文章就介绍到这了,更多相关python drop_duplicates() 使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python 多线程,threading模块,创建子线程的两种方式示例
这篇文章主要介绍了Python 多线程,threading模块,创建子线程的两种方式,结合实例形式分析了Python线程的原理与创建子线程的相关实现技巧,需要的朋友可以参考下2019-09-09
Pytorch 的损失函数Loss function使用详解
今天小编就为大家分享一篇Pytorch 的损失函数Loss function使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-01-01
Python求两个文本文件以行为单位的交集、并集与差集的方法
这篇文章主要介绍了Python求两个文本文件以行为单位的交集、并集与差集的方法,涉及Python文本文件与集合运算的相关技巧,需要的朋友可以参考下2015-06-06


最新评论