如何禁止 Pandas DataFrame 中出现重复标签?

pythontkinterserver side programmingprogramming

默认情况下,Pandas 允许 DataFrame 中出现重复标签。但是,这可能会导致问题,因为如果 DataFrame 中存在重复标签,某些 Pandas 方法将不起作用。在本文中,我们将了解如何防止 Pandas 允许重复标签或在编译时捕获它们。

示例

查看以下代码。我们有一个 DataFrame,其中两列具有相同的列名 "Name"。尽管如此,Pandas 仍会生成所需的输出而不会出现任何问题。

import pandas as pd

df = pd.DataFrame(
   [
      ['John', 89, 'Maths'],
      ['Jacob', 23, 'Physics'],
      ['Tom', 100, 'Chemistry']],
   columns=['Name', 'Name', 'Subjects'])

print("Input DataFrame is:\n", df)

输出

它将产生以下输出 -

Input DataFrame is:
    Name  Name   Subjects
0   John    89      Maths
1  Jacob    23    Physics
2    Tom   100  Chemistry

现在,让我们看看如何防止 Pandas 允许重复标签。

我们可以使用 .set_flags(allows_duplicate_labels=False),它将自动检测 DataFrame 中的重复标签并抛出错误。

现在,运行相同的代码,将 allows_duplicate_labels 设置为 False,它将产生错误 −


import pandas as pd

df = pd.DataFrame(
   [
      ['John', 89, 'Maths'],
      ['Jacob', 23, 'Physics'],
      ['Tom', 100, 'Chemistry']],
   columns=['Name', 'Name', 'Subjects']
).set_flags(allows_duplicate_labels=False)

print("Input DataFrame is:\n", df)

现在,它将捕获重复的标签并产生以下错误 -

pandas.errors.DuplicateLabelError: Index has duplicates.
label positions         
Name     [0, 1]


相关文章