Ինչպե՞ս արգելել կրկնօրինակ պիտակները Pandas DataFrame-ում:


Լռելյայնորեն, Pandas-ը թույլ է տալիս կրկնօրինակել պիտակները DataFrame-ում: Այնուամենայնիվ, դա կարող է խնդիրներ առաջացնել, քանի որ Pandas-ի որոշ մեթոդներ չեն աշխատի, եթե DataFrame-ում կրկնօրինակներ կան: Այս հոդվածում մենք կտեսնենք, թե ինչպես կարելի է պանդաներին թույլ չտալ կրկնօրինակ պիտակներ կամ բռնել դրանք հավաքման պահին:

Օրինակ

Նայեք հետևյալ կոդը. Մենք ունենք DataFrame երկու սյունակներով, որոնք ունեն նույն սյունակի անունը «Անուն»: Այդուհանդերձ, պանդաները կարտադրեն անհրաժեշտ արդյունքը առանց որևէ խնդիրների:

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

Այժմ տեսնենք, թե ինչպես կարելի է կանխել պանդաներին կրկնօրինակ պիտակները թույլ չտալ:

Մենք կարող ենք օգտագործել .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]