Les Pandas déposent des lignes en double
-
DataFrame.drop_duplicates()
Syntaxe -
Supprimer les lignes en double en utilisant la méthode
DataFrame.drop_duplicates()
-
Mettre
keep='last'
dans la méthodedrop_duplicates()
Ce tutoriel explique comment nous pouvons supprimer tous les enregistrements en double d’un Pandas DataFrame en utilisant la méthode DataFrame.drop_duplicates()
.
DataFrame.drop_duplicates()
Syntaxe
DataFrame.drop_duplicates(subset=None, keep="first", inplace=False, ignore_index=False)
Il renvoie un DataFrame en supprimant toutes les lignes répétées dans le DataFrame.
Supprimer les lignes en double en utilisant la méthode DataFrame.drop_duplicates()
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates()
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Production :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
Il supprime les lignes ayant les mêmes valeurs pour toutes les colonnes. Par défaut, seules les lignes ayant les mêmes valeurs pour chaque colonne dans le DataFrame sont considérées comme des doublons. Dans le DataFrame df_with_duplicates
, la première et la cinquième ligne ont les mêmes valeurs pour toutes les colonnes, s que la cinquième ligne est supprimée.
Définissez le paramètre subset
pour supprimer les doublons en fonction de colonnes spécifiques uniquement
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"])
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Production :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
Ici, nous passons Name
comme un argument subset
à la méthode drop_duplicates()
. Les quatrième et cinquième lignes sont supprimées car elles ont la même valeur de la colonne Name
que la première colonne.
Mettre keep='last'
dans la méthode drop_duplicates()
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"], keep="last")
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Production :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
5 302 Watch 300
Il supprime toutes les lignes sauf la dernière ligne ayant la même valeur que la colonne Name
.
Nous définissons keep=False
pour supprimer toutes les lignes ayant la même valeur d’une colonne.
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"], keep=False)
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Résultat :
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
Il supprime la première, la cinquième et la sixième ligne car elles ont toutes la même valeur pour la colonne Name
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArticle connexe - Pandas DataFrame Row
- Comment obtenir le nombre de lignes d'un Pandas DataFrame
- Comment mélanger au hasard les lignes DataFrame dans Pandas
- Filtrer les lignes des cadres de données en fonction des valeurs des colonnes dans Pandas
- Comment parcourir les lignes d'un DataFrame dans Pandas
- Comment obtenir l'index de toutes les lignes dont la colonne particulière satisfait la condition donnée dans Pandas