Comment supprimer une ligne en fonction de la valeur de la colonne dans Pandas DataFrame

  1. La méthode .drop pour supprimer une ligne sur une valeur de colonne dans le Pandas Dataframe
  2. Méthode de masquage booléen pour supprimer une ligne dans la dataframe de Pandas

Nous allons présenter des méthodes pour supprimer des lignes de Pandas DataFrame basées sur les conditions sur les valeurs des colonnes, en utilisant .drop (avec et sans loc) et masquage booléen.

La méthode .drop pour supprimer une ligne sur une valeur de colonne dans le Pandas Dataframe

La méthode .drop accepte les noms d’une seule colonne ou d’une liste de colonnes et supprime les lignes ou les colonnes. Pour les lignes, nous définissons le paramètre axis=0 et pour les colonnes, nous définissons axis=1 (par défaut axis est 0). Nous pouvons également obtenir les séries de True et False en fonction de la condition qui s’applique à la valeur de la colonne dans la dataframe de Pandas.

Exemples de codes:

# python 3.x
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock']) 
# Get names of indexes for which column Stock has value No
indexNames = df[ df['Stock'] == 'No' ].index
# Delete these row indexes from dataFrame
df.drop(indexNames , inplace=True)
print(df)

Production:

     Name  Price Stock
0  Orange     34   Yes
3   Apple     44   Yes
5    Kiwi     84   Yes

Nous pouvons également obtenir un résultat similaire en utilisant le .loc dans la méthode df.drop.

df.drop(df.loc[df['Stock']=='Yes'].index, inplace=True)

Nous pouvons également supprimer les lignes sur la base de plusieurs valeurs de colonne. Dans l’exemple ci-dessus, nous pouvons supprimer les lignes qui ont un prix >= 30 et un prix <=70.

Exemple de code:

# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock'])
indexNames = df[ (df['Price'] >= 30)
                & (df['Price'] <= 70) ].index
df.drop(indexNames , inplace=True)
print(df)

Production:

     Name  Price Stock
1   Mango     24    No
2  banana     14    No
5    Kiwi     84   Yes

Les lignes ayant un prix > 30 et moins < 70 ont été supprimées.

Méthode de masquage booléen pour supprimer une ligne dans la dataframe de Pandas

Le masquage booléen est la meilleure et la plus simple façon de supprimer une ligne dans une dataframe de Pandas en fonction de la valeur de la colonne.

Exemples de codes:

# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock'])
print(df[df.Price > 40])
print('............................')
print(df[(df.Price > 40) & (df.Stock== 'Yes')])  

Production:

        Name  Price Stock
3      Apple     44   Yes
4  Pineapple     64    No
5       Kiwi     84   Yes
............................
    Name  Price Stock
3  Apple     44   Yes
5   Kiwi     84   Yes

Article connexe - Pandas DataFrame

  • Comment définir la valeur d'une cellule particulière dans Pandas DataFrame à l'aide de l'index
  • Comment convertir l'index d'une Dataframe de Pandas en une colonne