Un résumé de la façon de vérifier les éléments en double dans une table et de supprimer les valeurs en double
Vous pouvez effectuer le même traitement que la «suppression des doublons» qui est fréquemment utilisée dans Excel.
-Row0 et row5 sont complètement dupliqués. ・ Tous les éléments de col0 et col4 sont dupliqués ・ Col2 est row0 = row5, row1 = row4 ・ Col3 est row0 = row5, row1 = row3
** Les lignes en double sont vraies **.
** Par défaut, la ligne dupliquée supérieure est considérée comme False **, et les lignes en dessous sont considérées comme True. Il est également possible de définir le côté inférieur sur True en option. └ Décidez si la cible est en haut ou en bas lors de la suppression. └ Il est également possible de supprimer toutes les lignes en double.
-Il est également possible de spécifier la colonne cible par nom de colonne.
①duplicated ②duplicated(keep='last') ③duplicated(keep=False) ④duplicated(['aaa']) ⑤duplicated(['aaa','bbb'])
duplicated
df.duplicated()
#production
row0 False
row1 False
row2 False
row3 False
row4 False
row5 True
dtype: bool
Seule la ligne 5 est considérée comme dupliquée (True).
Row = 0 et row = 5 sont identiques dans toutes les colonnes. Par défaut, la première ligne est False, donc row5 est considérée comme dupliquée.
Par défaut: "keep = 'first'" Les deux processus suivants sont identiques.
df.duplicated()
df.duplicated(keep='first')
keep=last
df.duplicated(keep='last')
#production
row0 True
row1 False
row2 False
row3 False
row4 False
row5 False
dtype: bool
row0 est un jugement en double (True).
keep=False
df.duplicated(keep=False)
#production
row0 True
row1 False
row2 False
row3 False
row4 False
row5 True
dtype: bool
Row0 et row5 sont des jugements en double (True).
** ▼ En cas de duplication (['col0']) **
Spécifiez une colonne
df.duplicated(['col0'])
#production
row0 False
row1 True
row2 True
row3 True
row4 True
row5 True
dtype: bool
Puisque tous les éléments de col0 sont 1, tous sauf la première colonne sont considérés comme des doublons.
df.duplicated(['col0','col3'])
#production
row0 False
row1 False
row2 False
row3 True
row4 False
row5 True
dtype: bool
Seules les lignes 3 et 5 sont vraies. └ row3 de col0 et col3 est True → True └ row5 de col0 et col3 est True → True └ col0 et row1 sont True, la ligne1 de col3 est False → False
La ligne jugée dupliquée (True) par la méthode dupliquée est la cible de la suppression.
①drop_duplicates ②drop_duplicates(keep='last') ③drop_duplicates(keep=False) ④drop_duplicates(['aaa']) ⑤drop_duplicates(['aaa','bbb'])
drop_duplicates
df.drop_duplicates()
la ligne 5 a été supprimée.
Dupliquer row0 et row5. Étant donné que la ligne du haut n'est pas considérée comme dupliquée (par défaut, keep = 'first'), la ligne5 a été supprimée.
keep='last'
df.drop_duplicates(keep='last')
keep=False
df.drop_duplicates(keep=False)S
Supprimé à la fois row0 et row5.
Spécifiez la colonne
df.drop_duplicates(['col0'])
Tous les éléments de col0 sont dupliqués de row0 à row5. Puisqu'il s'agit d'un jugement en double autre que row1, il sera supprimé.
Spécifiez la colonne
drop_duplicates(['col0'], keep='last')
Si keep = 'last', la ligne du bas ne sera pas une vérification en double.
Spécifiez plusieurs colonnes
df.drop_duplicates(['col2', 'col3'])
ligne5 supprimée.
Les doublons dans col2 sont row1, row4, row5. Les doublons dans col3 sont row1 et row5. ⇛ Le commun est row1 et row5. Étant donné que la première ligne dupliquée est définie pour rester (par défaut, keep = 'first'), seule la ligne5 sera supprimée.
① Confirmation des noms de ligne en double ② Supprimez le nom de ligne en double et vérifiez
** ▼ Options disponibles **
keep='first'
└ Ne jugez pas les doublons pour le nom de la première ligne
keep='last'
└ Ne jugez pas le nom de dernière ligne des doublons comme des doublons
keep=False
└ Tous les noms de ligne en double sont considérés comme des doublons
└ Si False, aucun quota n'est requis
Puisque l'option de ".duplicated ()" est "keep = 'first'" par défaut, la première ligne dupliquée est False et la deuxième ligne et les suivantes sont True.
Rechercher les noms de ligne en double
df.index.duplicated()
#production
# array([False, False, False, False, True, True])
▼ Table d'origine
Les noms de 0ème et 5ème ligne et les noms de 1ère et 4ème ligne sont dupliqués. ⇛ Les 5e et 4e sont des jugements en double.
Tous les noms de ligne en double sont True
df.index.duplicated(keep=False)
#production
# array([ True, True, False, False, True, True])
Comment obtenir une liste de noms de lignes en supprimant les noms de lignes en double.
Utilisé lorsque vous souhaitez vérifier le nom de la ligne.
Obtenir en supprimant le nom de la ligne
df.index.drop_duplicates()
#production
# Index(['AAA', 'BBB', 'CCC', 'DDD'], dtype='object')
Les deuxièmes «AAA» et «BBB» qui ont été dupliqués ont été supprimés.
▼ Table d'origine
df.columns.duplicated()
df.columns.drop_duplicates()
└ ".columns": Extraire les noms de colonnes de la table avec liste.
Recommended Posts