pandas series.drop_duplicates() 方法中的 keep 参数如何工作?

pandasserver side programmingprogramming更新于 2025/5/22 0:07:17

pandas series 构造函数中的 drop_duplicate() 方法用于从 series 对象中删除重复值。此方法清除重复值并返回修改了行的 series,它不会更改原始 series 对象。相反,它将返回一个新的。

drop_duplicates() 方法中的一个重要参数是"Keep",此参数的默认值是"first",它保留第一个出现的值并删除其余值。我们还可以为 keep 参数指定 Last 和 False 值。

如果 keep=False,它将删除所有重复值。或者如果 keep="Last",它会删除除最后一次出现之外的重复值。

示例 1

在下面的例子中,我们首先使用带有字符串列表的 pandas series 方法创建了一个 pandas Series。稍后,我们通过设置 keep="last"应用了 drop_duplicates() 方法。

# 导入 pandas 包
import pandas as pd

# 创建具有重复值的 pandas 系列
series = pd.Series(['Robin', 'John', 'Nori', 'Yi', 'Robin', 'Amal', 'Nori'])
print(series)

# 使用 keep='last' 删除重复值
result = series.drop_duplicates(keep='last')

print('Output:
',result)

输出

输出如下所示 −

0    Robin
1     John
2     Nori
3       Yi
4    Robin
5     Amal
6     Nori
dtype: object

Output:
1    John
3      Yi
4   Robin
5    Amal
6    Nori
dtype: object

值"Robin"在两个索引位置"0"和"4"重复出现,值"Nori"也在两个位置"2"、"6"重复出现。

通过设置 keep=Last,我们成功删除了索引位置 0 和 2 处的值。

示例 2

对于同一个示例,我们将 keep 参数的值从"last"更改为"Last"。到"first"。

# 导入 pandas 包
导入 pandas 作为 pd

# 创建具有重复值的 pandas 系列
series = pd.Series(['Robin', 'John', 'Nori', 'Yi', 'Robin', 'Amal', 'Nori'])
print(series)

# 使用 keep='first' 删除重复值
result = series.drop_duplicates(keep='first')

print('Output:
',result)

输出

You will get the following output −

0    Robin
1     John
2     Nori
3       Yi
4    Robin
5     Amal
6     Nori
dtype: object

Output:
0    Robin
1     John
2     Nori
3       Yi
5     Amal
dtype: object

对于上述输出,“4” 和 “6” 处的重复值被删除,因为值 “Robin” 和 “Nori” 首次出现在 “0” 和 “2” 位置。

示例 3

在此示例中,我们将看到 drop_duplicates() 方法如何针对 keep=False 值起作用。我们首先创建了一个带有整数列表的系列对象,然后应用了该方法。

# 导入 pandas 包
导入 pandas 作为 pd

# 创建具有重复值的 pandas 系列
series = pd.Series([1,2,1,3,4,2,6,4,5])
print(series)

# 使用 keep=False 删除重复值
result = series.drop_duplicates(keep=False)

print('Output:
',result)

输出

输出如下所示 −

0    1
1    2
2    1
3    3
4    4
5    2
6    6
7    4
8    5
dtype: int64

Output:
3    3
6    6
8    5
dtype: int64

drop_duplicates() 方法生成的系列对象只有 3 行,而原始系列有 9 行。发生这种情况是因为 keep=False 将删除所有重复值,它会保留任何单个出现的情况。


相关文章