Skip to content

La mรฉthode ๐โ€Œ๐ซโ€Œ๐จโ€Œ๐ฉโ€Œ() vous permet de supprimer les lignes et les colonnes de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

Consultez les articles suivants sur la suppression des valeurs manquantes ( N๐šโ€ŒN ) et des lignes contenant des รฉlรฉments en double.

L’exemple de code de cet article est basรฉ sur la version 2.0.3 de pandas . Le code ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ suivant est utilisรฉ comme exemple.

import pandas as pd print(pd.__version__) # 2.0.3 df = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=0) print(df) # age state point # name  # Alice 24 NY 64 # Bob 42 CA 92 # Charlie 18 CA 70 # Dave 68 TX 70 # Ellen 24 CA 88 # Frank 30 NY 57 

Supprimer des lignes de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ

Spรฉcifier par nom de ligne (รฉtiquette)

Lorsque vous utilisez la mรฉthode ๐โ€Œ๐ซโ€Œ๐จโ€Œ๐ฉโ€Œ() pour supprimer une ligne, spรฉcifiez le nom de la ligne pour le premier argument ๐ฅโ€Œ๐šโ€Œ๐›โ€Œ๐žโ€Œ๐ฅโ€Œ๐ฌโ€Œ et dรฉfinissez l’argument ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ sur 0 . La valeur par dรฉfaut de ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ est 0 , elle peut donc รชtre omise.

print(df.drop('Charlie', axis=0)) # age state point # name  # Alice 24 NY 64 # Bob 42 CA 92 # Dave 68 TX 70 # Ellen 24 CA 88 # Frank 30 NY 57 print(df.drop('Charlie')) # age state point # name  # Alice 24 NY 64 # Bob 42 CA 92 # Dave 68 TX 70 # Ellen 24 CA 88 # Frank 30 NY 57 

ร€ partir de la version 0.21.0 , l’argument ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ est รฉgalement disponible.

print(df.drop(index='Charlie')) # age state point # name  # Alice 24 NY 64 # Bob 42 CA 92 # Dave 68 TX 70 # Ellen 24 CA 88 # Frank 30 NY 57 

Utilisez une liste pour supprimer plusieurs lignes ร  la fois.

print(df.drop(['Bob', 'Dave', 'Frank'])) # age state point # name  # Alice 24 NY 64 # Charlie 18 CA 70 # Ellen 24 CA 88 print(df.drop(index=['Bob', 'Dave', 'Frank'])) # age state point # name  # Alice 24 NY 64 # Charlie 18 CA 70 # Ellen 24 CA 88 

Par dรฉfaut, le D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ d’origine reste inchangรฉ et un nouveau D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ est renvoyรฉ.

En dรฉfinissant l’argument ๐ขโ€Œ๐งโ€Œ๐ฉโ€Œ๐ฅโ€Œ๐šโ€Œ๐œโ€Œ๐žโ€Œ sur T๐ซโ€Œ๐ฎโ€Œ๐žโ€Œ , vous pouvez modifier directement le D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ d’origine , et aucun nouveau D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ n’est rendu ; ร  la place, il renvoie N๐จโ€Œ๐งโ€Œ๐žโ€Œ .

df_copy = df.copy() df_copy.drop(index=['Bob', 'Dave', 'Frank'], inplace=True) print(df_copy) # age state point # name  # Alice 24 NY 64 # Charlie 18 CA 70 # Ellen 24 CA 88 

Spรฉcifier par numรฉro de ligne

Pour indiquer par numรฉro de ligne, utilisez l’attribut ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ de D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

Utilisez l’attribut ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ avec [] pour obtenir le nom de la ligne en fonction de son numรฉro. Pour prรฉciser plusieurs lignes, utilisez une liste.

print(df.index[[1, 3, 5]]) # Index(['Bob', 'Dave', 'Frank'], dtype='object', name='name') 

Vous pouvez l’utiliser pour le premier argument ๐ฅโ€Œ๐šโ€Œ๐›โ€Œ๐žโ€Œ๐ฅโ€Œ๐ฌโ€Œ ou l’argument ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ de la mรฉthode ๐โ€Œ๐ซโ€Œ๐จโ€Œ๐ฉโ€Œ() .

print(df.drop(df.index[[1, 3, 5]])) # age state point # name  # Alice 24 NY 64 # Charlie 18 CA 70 # Ellen 24 CA 88 print(df.drop(index=df.index[[1, 3, 5]])) # age state point # name  # Alice 24 NY 64 # Charlie 18 CA 70 # Ellen 24 CA 88 

Remarques sur le moment oรน l’index n’est pas dรฉfini

Si ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ n’est pas dรฉfini, la valeur par dรฉfaut est une sรฉquence d’entiers. Soyez prudent lorsque ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ est un nombre plutรดt qu’une chaรฎne.

df_noindex = pd.read_csv('data/src/sample_pandas_normal.csv') print(df_noindex) # name age state point # 0 Alice 24 NY 64 # 1 Bob 42 CA 92 # 2 Charlie 18 CA 70 # 3 Dave 68 TX 70 # 4 Ellen 24 CA 88 # 5 Frank 30 NY 57 print(df_noindex.index) # RangeIndex(start=0, stop=6, step=1) 

Lorsque les indices sont sรฉquentiels, la spรฉcification directe du numรฉro produit le mรชme rรฉsultat que l’utilisation de l’attribut ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ .

print(df_noindex.drop([1, 3, 5])) # name age state point # 0 Alice 24 NY 64 # 2 Charlie 18 CA 70 # 4 Ellen 24 CA 88 print(df_noindex.drop(df_noindex.index[[1, 3, 5]])) # name age state point # 0 Alice 24 NY 64 # 2 Charlie 18 CA 70 # 4 Ellen 24 CA 88 

Le rรฉsultat est diffรฉrent si la sรฉquence est perturbรฉe par des actions telles que le tri. Lorsque vous spรฉcifiez directement un numรฉro, la ligne portant ce numรฉro comme รฉtiquette est supprimรฉe. Lorsque vous utilisez l’attribut ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ , la ligne portant ce numรฉro comme position est supprimรฉe.

df_noindex_sort = df_noindex.sort_values('state') print(df_noindex_sort) # name age state point # 1 Bob 42 CA 92 # 2 Charlie 18 CA 70 # 4 Ellen 24 CA 88 # 0 Alice 24 NY 64 # 5 Frank 30 NY 57 # 3 Dave 68 TX 70 print(df_noindex_sort.index) # Index([1, 2, 4, 0, 5, 3], dtype='int64') print(df_noindex_sort.drop([1, 3, 5])) # name age state point # 2 Charlie 18 CA 70 # 4 Ellen 24 CA 88 # 0 Alice 24 NY 64 print(df_noindex_sort.drop(df_noindex_sort.index[[1, 3, 5]])) # name age state point # 1 Bob 42 CA 92 # 4 Ellen 24 CA 88 # 5 Frank 30 NY 57 

Reportez-vous ร  l’article ci-dessous pour plus de dรฉtails sur le tri.

Supprimer les colonnes de ๐ฉโ€Œ๐šโ€Œ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ฌโ€Œ.D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ

Spรฉcifier par nom de colonne (รฉtiquette)

Lorsque vous utilisez la mรฉthode ๐โ€Œ๐ซโ€Œ๐จโ€Œ๐ฉโ€Œ() pour supprimer une colonne, spรฉcifiez le nom de la colonne pour le premier argument ๐ฅโ€Œ๐šโ€Œ๐›โ€Œ๐žโ€Œ๐ฅโ€Œ๐ฌโ€Œ et dรฉfinissez l’argument ๐šโ€Œ๐ฑโ€Œ๐ขโ€Œ๐ฌโ€Œ sur 1 .

print(df.drop('state', axis=1)) # age point # name  # Alice 24 64 # Bob 42 92 # Charlie 18 70 # Dave 68 70 # Ellen 24 88 # Frank 30 57 

ร€ partir de la version 0.21.0 , l’argument ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ est รฉgalement disponible.

print(df.drop(columns='state')) # age point # name  # Alice 24 64 # Bob 42 92 # Charlie 18 70 # Dave 68 70 # Ellen 24 88 # Frank 30 57 

Utilisez une liste pour supprimer plusieurs colonnes ร  la fois.

print(df.drop(['state', 'point'], axis=1)) # age # name  # Alice 24 # Bob 42 # Charlie 18 # Dave 68 # Ellen 24 # Frank 30 print(df.drop(columns=['state', 'point'])) # age # name  # Alice 24 # Bob 42 # Charlie 18 # Dave 68 # Ellen 24 # Frank 30 

L’argument ๐ขโ€Œ๐งโ€Œ๐ฉโ€Œ๐ฅโ€Œ๐šโ€Œ๐œโ€Œ๐žโ€Œ peut รชtre utilisรฉ aussi bien pour les lignes.

df_copy = df.copy() df_copy.drop(columns=['state', 'point'], inplace=True) print(df_copy) # age # name  # Alice 24 # Bob 42 # Charlie 18 # Dave 68 # Ellen 24 # Frank 30 

Spรฉcifier par numรฉro de colonne

Pour indiquer par numรฉro de colonne, utilisez l’attribut ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ de D๐šโ€Œ๐ญโ€Œ๐šโ€ŒF๐ซโ€Œ๐šโ€Œ๐ฆโ€Œ๐žโ€Œ .

print(df.columns[[1, 2]]) # Index(['state', 'point'], dtype='object') print(df.drop(df.columns[[1, 2]], axis=1)) # age # name  # Alice 24 # Bob 42 # Charlie 18 # Dave 68 # Ellen 24 # Frank 30 print(df.drop(columns=df.columns[[1, 2]])) # age # name  # Alice 24 # Bob 42 # Charlie 18 # Dave 68 # Ellen 24 # Frank 30 

Si la valeur ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ est un entier, faites preuve de la mรชme prudence que celle mentionnรฉe pour les lignes.

Supprimer plusieurs lignes et colonnes simultanรฉment

ร€ partir de la version 0.21.0 , vous pouvez supprimer simultanรฉment plusieurs lignes et colonnes en utilisant ร  la fois les arguments ๐ขโ€Œ๐งโ€Œ๐โ€Œ๐žโ€Œ๐ฑโ€Œ et ๐œโ€Œ๐จโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐งโ€Œ๐ฌโ€Œ .

Bien entendu, il est รฉgalement possible de prรฉciser par numรฉro de ligne et numรฉro de colonne ou de prรฉciser l’argument ๐ขโ€Œ๐งโ€Œ๐ฉโ€Œ๐ฅโ€Œ๐šโ€Œ๐œโ€Œ๐žโ€Œ .

print(df.drop(index=['Bob', 'Dave', 'Frank'], columns=['state', 'point'])) # age # name  # Alice 24 # Charlie 18 # Ellen 24 print(df.drop(index=df.index[[1, 3, 5]], columns=df.columns[[1, 2]])) # age # name  # Alice 24 # Charlie 18 # Ellen 24 df_copy = df.copy() df_copy.drop(index=['Bob', 'Dave', 'Frank'], columns=['state', 'point'], inplace=True) print(df_copy) # age # name  # Alice 24 # Charlie 18 # Ellen 24