如何删除 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 在初始系列对象中出现了多次,这些行在结果系列对象中被删除。


相关文章