Pandas DataFrame DataFrame.drop_duplicates() Função

Suraj Joshi 30 janeiro 2023
  1. Sintaxe de pandas.DataFrame.drop_duplicates():
  2. Códigos de exemplo: Remover linhas duplicadas utilizando Pandas DataFrame.set_index() Método
  3. Códigos de exemplo: definir o parâmetro subset no método Pandas DataFrame.set_index()
  4. Códigos de exemplo: Set keep Parameter in Pandas DataFrame.set_index() Method
  5. Códigos de exemplo: defina o parâmetro ignore_index no método Pandas DataFrame.set_index()
Pandas DataFrame DataFrame.drop_duplicates() Função

A função Python Pandas DataFrame.drop_duplicates() remove todas as filas duplicadas do DataFrame.

Sintaxe de pandas.DataFrame.drop_duplicates():

DataFrame.drop_duplicates(subset: Union[Hashable, Sequence[Hashable], NoneType]=None,
                          keep: Union[str, bool]='first',
                          inplace: bool=False,
                          ignore_index: bool=False)

Parâmetros

subset Etiqueta da coluna ou Sequência de etiquetas. Colunas a considerar na identificação de duplicados
keep first, last ou False. Deixar cair todas as duplicações excepto a primeira(keep=first), deixar cair todas as duplicações excepto a última(keep=first) ou deixar cair todas as duplicações(keep=false)
inplace Booleano. Se True modificar o autor da chamada DataFrame.
ignore_index Booleano. Se True, os índices do DataFrame original são ignorados. O valor por defeito é False, o que significa que os índices são utilizados.

Devolver

Se inplace é True, um DataFrame remove todas as linhas duplicadas do DataFrame; caso contrário, None.

Códigos de exemplo: Remover linhas duplicadas utilizando Pandas DataFrame.set_index() Método

import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','XYZ' ) ,
             ('banana', 14, 'No','BCD' ) ,
            ('Orange', 34, 'Yes' ,'ABC') ]

df = pd.DataFrame(fruit_list, 
                  columns = ['Name',
                             'Price',
                             'In_Stock',
                             'Supplier'])

print("DataFrame:")
print(df)

df_unique=df.drop_duplicates() 

print("DataFrame with Unique Rows:")
print(df_unique)

Resultado:

DataFrame:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      XYZ
2  banana     14       No      BCD
3  Orange     34      Yes      ABC
DataFrame with Unique Rows:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      XYZ
2  banana     14       No      BCD

O DataFrame original tem a 1ª e 4ª filas idênticas.

Pode remover todas as linhas duplicadas da DataFrame utilizando o método drop_duplicates().

Códigos de exemplo: definir o parâmetro subset no método Pandas DataFrame.set_index()

import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','XYZ' ) ,
             ('banana', 14, 'No','ABC' ) ,
            ('Orange', 34, 'Yes' ,'ABC') ]

df = pd.DataFrame(fruit_list, 
                  columns = ['Name',
                             'Price',
                             'In_Stock',
                             'Supplier'])

print("DataFrame:")
print(df)

df_unique=df.drop_duplicates(subset ="Supplier") 

print("DataFrame with Unique vales of Supplier Column:")
print(df_unique)

Resultado:

DataFrame:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      XYZ
2  banana     14       No      ABC
3  Orange     34      Yes      ABC
DataFrame with Unique vales of Supplier Column:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      XYZ

Este método remove todas as linhas da DataFrame, que não têm valores únicos da coluna Supplier.

Aqui, a 1ª, 3ª e 4ª filas têm um valor comum da coluna Supplier. Assim, a 3ª e 4ª linhas são removidas da DataFrame; como por defeito, a primeira linha duplicada não será removida.

Códigos de exemplo: Set keep Parameter in Pandas DataFrame.set_index() Method

import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','XYZ' ) ,
             ('banana', 14, 'No','ABC' ) ,
            ('Orange', 34, 'Yes' ,'ABC') ]

df = pd.DataFrame(fruit_list, 
                  columns = ['Name',
                             'Price',
                             'In_Stock',
                             'Supplier'])

print("DataFrame:")
print(df)

df_unique=df.drop_duplicates(subset ="Supplier",keep="last") 

print("DataFrame with Unique vales of Supplier Column:")
print(df_unique)

Resultado:

DataFrame:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      XYZ
2  banana     14       No      ABC
3  Orange     34      Yes      ABC
DataFrame with Unique vales of Supplier Column:
     Name  Price In_Stock Supplier
1   Mango     24       No      XYZ
3  Orange     34      Yes      ABC

Este método remove todas as linhas da DataFrame, que não têm valores únicos da coluna Supplier, mantendo apenas a última linha duplicada.

Aqui, a 1ª, 3ª e 4ª linhas têm um valor comum da coluna Supplier. Assim, a 1ª e 3ª filas são removidas da coluna DataFrame.

Códigos de exemplo: defina o parâmetro ignore_index no método Pandas DataFrame.set_index()

import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','XYZ' ) ,
             ('banana', 14, 'No','ABC' ) ,
            ('Orange', 34, 'Yes' ,'ABC') ]

df = pd.DataFrame(fruit_list, 
                  columns = ['Name',
                             'Price',
                             'In_Stock',
                             'Supplier'])

print("DataFrame:")
print(df)

df.drop_duplicates(subset ="Supplier",keep="last",inplace=True,ignore_index=True) 

print("DataFrame with Unique vales of Supplier Column:")
print(df)

Resultado:

DataFrame:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      XYZ
2  banana     14       No      ABC
3  Orange     34      Yes      ABC
DataFrame with Unique vales of Supplier Column:
     Name  Price In_Stock Supplier
0   Mango     24       No      XYZ
1  Orange     34      Yes      ABC

Aqui, como ignore_index está definido para True, os índices do DataFrame original são ignorados, e novos índices são definidos para a linha.

Devido à função inplace=True, o DataFrame original é modificado após chamar a função ignore_index().

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Pandas DataFrame