Python Pandas - 重複標籤



在 Pandas 中,Series 和 DataFrames 中的行和列標籤都不需要唯一。如果資料集包含重複的索引標籤,則我們將其稱為重複標籤,這可能導致某些操作(例如過濾、聚合或切片)出現意外結果。

Pandas 提供了幾種方法來檢測、管理和處理此類重複標籤。在本教程中,我們將學習各種方法來檢測、管理和處理 Pandas 中的重複標籤。

檢查唯一標籤

要檢查 DataFrame 的行或列標籤是否唯一,可以使用 pandas 的 Index.is_unique 屬性。如果它返回 False,則表示您的索引中存在重複標籤。

示例

以下示例使用 pandas 的 Index.is_unique 屬性來檢查 DataFrame 的唯一標籤。

import pandas as pd

# Creating a DataFrame with duplicate row labels
df = pd.DataFrame({"A": [0, 1, 2], 'B': [4, 1, 1]}, index=["a", "a", "b"])

# Display the Original DataFrame
print("Original DataFrame:")
print(df)

# Check if the row index is unique
print("Is row index is unique:",df.index.is_unique)  

# Check if the column index is unique
print('Is column index is unique:',df.columns.is_unique) 

以下是上述程式碼的輸出 -

Original DataFrame:
AB
a04
a11
b21
Is row index is unique: False Is column index is unique: True

檢測重複標籤

Index.duplicated() 方法用於檢測 Pandas 物件的重複標籤,它返回一個布林陣列,指示索引中的每個標籤是否重複。

示例

以下示例使用 Index.duplicated() 方法來檢測 Pandas DataFrame 的重複行標籤。

import pandas as pd

# Creating a DataFrame with duplicate row labels
df = pd.DataFrame({"A": [0, 1, 2], 'B': [4, 1, 1]}, index=["a", "a", "b"])

# Display the Original DataFrame
print("Original DataFrame:")
print(df)

# Identify duplicated row labels
print('Duplicated Row Labels:', df.index.duplicated())

以下是上述程式碼的輸出 -

Original DataFrame:
AB
a04
a11
b21
Duplicated Row Labels: [False True False]

拒絕重複標籤

Pandas 提供了拒絕重複標籤的功能。預設情況下,pandas 允許重複標籤,但您可以透過設定 .set_flags(allows_duplicate_labels=False) 來禁止它們。這可以應用於 Series 和 DataFrames。如果 pandas 檢測到重複標籤,它將引發 DuplicateLabelError

示例

以下示例演示了建立不允許重複標籤的 Pandas Series 物件。

import pandas as pd

# Create a Series with duplicate labels and disallow duplicates
try:
    pd.Series([0, 1, 2], index=["a", "b", "b"]).set_flags(allows_duplicate_labels=False)
except pd.errors.DuplicateLabelError as e:
    print(e)

以下是上述程式碼的輸出 -

Index has duplicates.

      positions
label          
b        [1, 2]
廣告