如何使用Python Pandas库检测重复标签?
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。
Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.
输出
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()) # getting boolean string unique_f = f[~f.index.duplicated()] # filtering duplicates print() print(unique_f) # removed duplicated data
解释
DataFrame “f” 在索引中创建了一些重复数据。我们可以使用 f.index.duplicated() 来识别重复项,它将返回一个布尔值列表,表示重复的索引。使用此 duplicated 方法,我们可以从 DataFrame “f” 中删除重复标签。
输出
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” 中唯一的索引标签。