如何在 Pandas 系列中删除具有重复索引的行?


通过在 pandas 系列构造函数中使用 duplicated() 方法,我们可以轻松识别系列对象索引中的重复值。duplicated() 方法用于识别系列对象中的重复值。

duplicated() 方法将返回一个包含布尔值的系列。布尔值 False 表示单个出现的值,即唯一值。重复值用布尔值 True 表示。

示例 1

在这里,我们将看到如何删除具有重复索引的系列对象的行。

# importing pandas package
import pandas as pd

#create series
series = pd.Series(["a", "b", "c", "d", "e"],index=[1, 2, 1, 3, 2])

print(series)

# getting the index data
index = series.index

# removing duplicate indices separately
result = series[~index.duplicated(keep="first")]

print(result)

解释

最初,我们使用 pandas.Series() 函数创建了一个 pandas 系列对象,其索引标签为 [1, 2,1, 3, 2]。然后,我们对索引数据应用 duplicated() 方法以识别重复标签。

之后,我们应用“~”反转结果布尔值,并将此数据发送到原始系列作为子集,以获取一个没有任何重复索引的新系列对象。

输出

输出如下所示:

1    a
2    b
1    c
3    d
2    e
dtype: object

1    a
2    b
3    d
dtype: object

在上面的输出块中,我们可以看到原始系列对象以及没有重复标签的结果系列对象。

示例 2

让我们再举一个例子,删除具有重复索引的系列对象的行。

# importing package
import pandas as pd
import numpy as np

# creating pandas series
series = pd.Series(np.random.randint(1,100,10),
   index=["a", "b", "a", "d", "c", "e", "f", "c", "d", "e"])

print(series)

# getting the index data
index = series.index

# removing duplicate indices separately
result = series[~index.duplicated(keep="first")]

print(result)

解释

最初,我们创建了带有标记索引数据的系列对象,然后应用 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 在初始系列对象中出现不止一次,并且这些行在结果系列对象中被删除。

更新于: 2022-03-07

2K+ 阅读量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告