J'ai fait des recherches et je ne peux pas comprendre comment filtrer un dataframe par df["col"].str.contains(word)
, mais je me demande s'il existe un moyen de faire l'inverse: filtrer un dataframe par le compliment de cet ensemble. par exemple: à l'effet de !(df["col"].str.contains(word))
.
Cela peut-il être fait par une DataFrame
méthode?
re.complies
et je me suis dit que j'y reviendrais plus tard. On dirait que je suradapte la recherche et c'est comme vous le ditesdf[~df.col.str.contains(word)]
renvoie une copie du dataframe d'origine avec les lignes exclues correspondant au mot.J'avais également des problèmes avec le symbole not (~), alors voici une autre façon d'un autre thread StackOverflow :
la source
df[df["col1"].str.contains('this'|'that')==False and df["col2"].str.contains('foo'|'bar')==True]
? Merci!df = df[~df["col"].str.contains('\|')]
Vous pouvez utiliser Apply et Lambda pour sélectionner des lignes dans lesquelles une colonne contient tout élément d'une liste. Pour votre scénario:
la source
J'ai dû me débarrasser des valeurs NULL avant d'utiliser la commande recommandée par Andy ci-dessus. Un exemple:
Maintenant, exécutez la commande:
J'obtiens l'erreur suivante:
Je me suis débarrassé des valeurs NULL en utilisant d'abord dropna () ou fillna () et j'ai réessayé la commande sans problème.
la source
~df["second"].astype(str).str.contains(word)
pour forcer la conversion enstr
. Voir stackoverflow.com/questions/43568760/…J'espère que les réponses sont déjà postées
J'ajoute le cadre pour trouver plusieurs mots et annuler ceux de dataFrame .
Ici
'word1','word2','word3','word4'
= liste des motifs à rechercherdf
= DataFramecolumn_a
= Un nom de colonne de DataFrame dfla source
En plus de la réponse de nanselm2, vous pouvez utiliser à la
0
place deFalse
:la source
NaN