python - values - busque "does-not-contain" en un marco de datos en pandas
select rows containing string pandas (3)
Puede usar el operador de inversión (~) (que actúa como un no para datos booleanos):
~df["col"].str.contains(word)
contiene también acepta una expresión regular ...
He hecho algunas búsquedas y no sé cómo filtrar un marco de datos por df["col"].str.contains(word)
, sin embargo, me pregunto si hay una forma de hacer lo contrario: filtrar un dataframe por el cumplido de ese conjunto. por ejemplo: al efecto de !(df["col"].str.contains(word))
.
¿Se puede hacer esto a través de un método DataFrame
?
También estaba teniendo problemas con el símbolo no (~), así que aquí hay otra forma de otro hilo de :
df[df["col"].str.contains(''this|that'')==False]
Tuve que deshacerme de los valores NULL antes de usar el comando recomendado por Andy arriba. Un ejemplo:
df = pd.DataFrame(index = [0, 1, 2], columns=[''first'', ''second'', ''third''])
df.ix[:, ''first''] = ''myword''
df.ix[0, ''second''] = ''myword''
df.ix[2, ''second''] = ''myword''
df.ix[1, ''third''] = ''myword''
df
first second third
0 myword myword NaN
1 myword NaN myword
2 myword myword NaN
Ahora ejecutando el comando:
~df["second"].str.contains(word)
Obtuve el siguiente error:
TypeError: bad operand type for unary ~: ''float''
Me deshice de los valores NULL usando primero dropna () o fillna () y reintenté el comando sin ningún problema.