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.
- pandas : supprime NaN (valeurs manquantes) avec dropna()
- pandas : Rechercher et supprimer les lignes en double de DataFrame, Series
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
