下面我将详细讲解pandas.drop_duplicates() 的作用与使用方法的完整攻略。
pandas.drop_duplicates()的作用
pandas.drop_duplicates() 方法是 pandas 库中用于去除重复行的一个函数。它可以用来删除数据框中全列或部分列的重复数据,返回一个新的数据框。
pandas.drop_duplicates()的语法
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
参数:
subset
:可选参数,表示需要去重的列。默认是全部列。可以传递列的名称或序号列表。keep
:可选参数,表示保留哪一行作为重复项。有三种取值:first
:保留第一个出现的重复项,删除后面出现的。last
:保留最后一个出现的重复项,删除前面的。False
:删除所有重复项。
inplace
:可选参数,是否在原来的 DataFrame 上替换去重后的结果,默认为 False。ignore_index
:可选参数,当 inplace 为 True 时,是否重新生成索引,默认为 False。
使用方法
示例1
接下来,我们使用一个示例来说明 drop_duplicates 的用法:
假如我们有一个包含重复行的数据框:
import pandas as pd
data = pd.DataFrame({'name': ['Tom', 'Jerry', 'Mario', 'Tom'], 'age': [20, 21, 20, 22], 'gender': ['M', 'M', 'M', 'M']})
print(data)
输出为:
name age gender
0 Tom 20 M
1 Jerry 21 M
2 Mario 20 M
3 Tom 22 M
我们想要删除所有的重复行,那么我们可以直接使用 drop_duplicates() 方法,不传递任何参数:
data_without_duplicates = data.drop_duplicates()
print(data_without_duplicates)
输出为:
name age gender
0 Tom 20 M
1 Jerry 21 M
2 Mario 20 M
3 Tom 22 M
我们发现即使我们传递了所有的参数默认值,该方法仍然按照所有列的值来判断一个行是否是重复的,并将所有的重复行删除。
示例2
现在我们来看一个稍微复杂的示例。假如我们有一个记录了网站用户登录记录的数据框:
用户名 | 登录时间 | 登录 IP |
---|---|---|
Tom | 2019-01-01 | 192.168.1.1 |
Jerry | 2019-01-02 | 192.168.1.2 |
Tom | 2019-01-01 | 192.168.1.3 |
Mario | 2019-01-03 | 192.168.1.4 |
如果我们要去重,但是只根据用户名和登录时间去重,我们可以这样写:
import pandas as pd
data = pd.DataFrame({'username': ['Tom', 'Jerry', 'Tom', 'Mario'], 'login_time': ['2019-01-01', '2019-01-02', '2019-01-01', '2019-01-03'], 'login_ip': ['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4']})
print(data)
data_without_duplicates = data.drop_duplicates(subset=['username', 'login_time'])
print(data_without_duplicates)
输出为:
username login_time login_ip
0 Tom 2019-01-01 192.168.1.1
1 Jerry 2019-01-02 192.168.1.2
2 Tom 2019-01-01 192.168.1.3
3 Mario 2019-01-03 192.168.1.4
username login_time login_ip
0 Tom 2019-01-01 192.168.1.1
1 Jerry 2019-01-02 192.168.1.2
3 Mario 2019-01-03 192.168.1.4
我们可以看到,使用了 subset 参数之后,drop_duplicates 方法只根据指定的用户名和登录时间这两列来进行去重,而不是全列去重。
总结
总的来说,pandas.drop_duplicates() 方法非常简单易用,需要去重处理的情况下是 pandas 库中一种容易被使用的方法。