234 votes

Recherche de "does-not-contain" sur un DataFrame dans pandas

J'ai fait quelques recherches et je n'arrive pas à trouver comment filtrer un cadre de données en fonction des critères suivants

df["col"].str.contains(word)

Cependant, je me demande s'il n'y a pas un moyen de faire l'inverse : filtrer un cadre de données en fonction des compliments de cet ensemble.

!(df["col"].str.contains(word))

Cela peut-il se faire par le biais d'un DataFrame méthode ?

3voto

U9-Forward Points 8640

En complément de la réponse de nanselm2, vous pouvez utiliser 0 au lieu de False :

df["col"].str.contains(word)==0

1voto

rachwa Points 307

Pour annuler votre requête, utilisez ~ . Utilisation de query a l'avantage de retourner les observations valides de df directement :

df.query('~col.str.contains("word").values')

0voto

vasanth Points 31

Pour compléter la question ci-dessus, si quelqu'un veut supprimer toutes les lignes contenant des chaînes de caractères, on peut le faire :

df_new=df[~df['col_name'].apply(lambda x: isinstance(x, str))]

0voto

Bhanu Chander Points 80

D'une manière ou d'une autre, '.contains' n'a pas fonctionné pour moi mais lorsque j'ai essayé avec '.isin' comme mentionné par @kenan dans la réponse ( Comment supprimer les lignes d'un cadre de données pandas qui contiennent une chaîne particulière dans une colonne particulière ? ) cela fonctionne. En outre, si vous souhaitez examiner l'ensemble du cadre de données et supprimer les lignes qui contiennent le mot spécifique (ou un ensemble de mots), il vous suffit d'utiliser la boucle suivante

for col in df.columns:
    df = df[~df[col].isin(['string or string list separeted by comma'])]

il suffit d'enlever ~ pour obtenir le cadre de données qui contient le mot

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X