如何使用 Python Pandas 库检测重复标签?

pandasserver side programmingprogramming更新于 2025/4/5 12:22:17

Pandas 过去用于处理大型数据集,大型数据表的列和行用一些名称进行索引,这些名称称为标签。当我们处理数据集时,数据集中可能会出现一些重复的标签。

重复可能导致我们对数据做出错误的结论,它可能会影响我们期望的输出。这里我们讨论的是标签重复,只不过是行和列的索引名称重复超过 1 次。

我们举个例子来识别 DataFrame 中的重复标签。

识别列标签中的重复项

示例

df1 = pd.DataFrame([[6, 1, 2, 7], [8, 4, 5,9]], columns=["A", "A", "B","C"])
print(df1)
print(df1.columns.is_unique)

解释

创建了一个 2X4 形状的 DataFrame。为了验证列中是否存在任何重复的标签,这里我们使用 DataFrame.columns.is_unique。这将根据重复项的存在返回布尔数据 True 或 False。

输出

    A   A   B   C
0   6   1   2   7
1   8   4   5   9
False

此输出块表示 DataFrame df,布尔值 False 表示 DataFrame df 的列中存在重复标签。

通过使用 duplicated 方法,我们还可以获取 DataFrame 中的重复标签。以下块。

df1.columns[~df1.columns.duplicated()]

df1.columns 仅将列名作为数组,而 duplicated() 方法为您提供一个表示重复项的布尔值数组。通过使用上述代码,我们可以获得一个唯一的列标签列表。

Index(['A', 'B', 'C'], dtype='object')

识别索引标签中的重复项

与上述识别列标签中重复项的过程相同,我们也可以识别索引(行)中的重复项。

示例

f = pd.DataFrame({"A": [0, 1, 2, 3, 4]}, index=["x", "y", "x", "y","z"])
print(f)
print()
print(f.index.duplicated()) # 获取布尔字符串
unique_f = f[~f.index.duplicated()] # 过滤重复项
print()
print(unique_f) # 删除重复数据

解释

DataFrame “f” 已创建,索引中有一些重复数据。我们可以使用 f.index.duplicated() 识别重复项,它将返回一个表示重复索引的布尔值列表。通过使用这种 duplicated 方法,我们可以从 DataFrame 中删除重复的标签。

输出

   A
x   0
y   1
x   2
y   3
z   4

[False False True True False]

   A
x   0
y   1
z   4

第一个块是具有重复值的 DataFrame “f”,布尔值数组表示重复项。最后一个块表示来自 DataFrame “f” 的唯一索引标签。


相关文章