如何删除 Pandas 系列中索引重复的行?
pandasserver side programmingprogramming更新于 2025/7/11 0:22:17
通过使用 Pandas 系列构造函数中的 duplicated() 方法,我们可以轻松识别系列对象索引中的重复值。duplicated() 方法用于识别系列对象中的重复值。
duplicated() 方法将返回一个包含布尔值的系列。布尔值 False 表示单次出现的值是唯一的。重复的值用布尔值 True 表示。
示例 1
这里我们将看到如何删除具有重复索引的系列对象中的行。
# 导入 pandas 包 import pandas as pd # 创建系列 series = pd.Series(["a","b","c","d","e"],index=[1, 2, 1, 3, 2]) print(series) # 获取索引数据 index = series.index # 分别删除重复的索引 result = series[~index.duplicated(keep="first")] print(result)
解释
首先,我们使用 pandas.Series() 函数创建了一个带有索引标签 [1, 2,1, 3, 2] 的 Pandas 系列对象。然后,我们对索引数据应用了 duplicated() 方法来识别重复的标签。
之后,我们使用 “~” 反转结果布尔值,并将此数据作为子集发送到原始系列,以获得一个没有任何重复索引的新系列对象。
输出
输出如下所示 −
1 a 2 b 1 c 3 d 2 e dtype: object 1 a 2 b 3 d dtype: object
在上面的输出块中,我们可以看到原始的序列对象以及去除重复标签后的序列对象。
示例 2
我们再举一个例子,删除序列对象中重复索引的行。
# 导入包 import pandas as pd import numpy as np # 创建 pandas 序列 series = pd.Series(np.random.randint(1,100,10), index=[&"a&", &"b&", &"a&", &"d&", &"c&", &"e&", &"f&", &"c&", &"d&", "e"]) print(series) # 获取索引数据 index = series.index # 分别删除重复的索引 result = series[~index.duplicated(keep="first")] print(result)
解释
首先,我们创建了一个带有标签索引数据的 series 对象,然后应用了 duplicated() 方法来识别重复的标签。
输出
输出如下所示 −
a 66 b 73 a 83 d 63 c 23 e 56 f 55 c 22 d 26 e 20 dtype: int32 a 66 b 73 d 63 c 23 e 56 f 55 dtype: int32
标签 a、d、c、e 在初始系列对象中出现了多次,这些行在结果系列对象中被删除。

