Comment supprimer une ligne donnée d'une dataframe avec pandas ?

Published: 05 septembre 2021

Tags: Python; Pandas; DataFrame;

DMCA.com Protection Status

Exemples de comment supprimer une ligne donnée d'une dataframe avec pandas ?

Supprimer une ligne donnée d'une dataframe (Exemple 1)

Créons une dataframe avec pandas :

import pandas as pd
import numpy as np

data = np.random.randint(5, size=(4,3))

df = pd.DataFrame(data=data,columns=['C1','C2','C3'])

renvoie par exemple :

   C1  C2  C3
0   3   3   1
1   0   2   4
2   0   4   4
3   4   2   0

Pour supprimer la ligne avec index = 2 par exemple, une solution consiste à utiliser drop() (Notez que 0 signifie axis = 0 ici car drop() peut également être utilisé pour supprimer des colonnes):

df.drop([2], 0, inplace=True)

donne alors

   C1  C2  C3
0   3   3   1
1   0   2   4
3   4   2   0

Note: drop peut également être utilisé pour supprimer plusieurs lignes. Par exemple, pour supprimer les lignes 0 et 2 :

df.drop([0,2], 0,  inplace=True)

donne

   C1  C2  C3
1   0   2   4
3   4   2   0

Supprimer une ligne donnée d'une dataframe (Exemple 2)

Un autre exemple

import pandas as pd
import numpy as np

data = np.random.randint(5, size=(4,3))

df = pd.DataFrame(data=data,columns=['C1','C2','C3'], index=['A','B','C','D'])

avec index = ['A','B','C','D']

   C1  C2  C3
A   3   3   1
B   0   2   4
C   0   4   4
D   4   2   0

Pour supprimer la ligne avec index = B :

df.drop(['B'],0, inplace=True)

donne alors

   C1  C2  C3
A   3   3   1
C   0   4   4
D   4   2   0

Supprimer les lignes où une condition est vraie

Un autre exemple utile consiste à supprimer les lignes où une condition est vraie

import pandas as pd
import numpy as np

data = np.random.randint(5, size=(4,3))

df = pd.DataFrame(data=data,columns=['C1','C2','C3'])

donne

   C1  C2  C3
0   3   3   1
1   0   2   4
2   0   4   4
3   4   2   0

Supposons que nous voulions supprimer les lignes où la colonne C1 = 0. Pour ce faire, trouvons d'abord les index où la condition est vraie :

index_list = df.index[ df.loc[:,'C1'] == 0]

print(index_list)

donne:

Int64Index([1, 2], dtype='int64')

Nous pouvons alors utiliser drop() pour supprimer ces lignes :

df.drop(index_list,0, inplace=True)

donne ici:

   C1  C2  C3
0   3   3   1
    3   4   2   0

Références