如何在Pandas DataFrame中禁止重复的标签?
在默认情况下,Pandas允许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]