我做了一些搜索,不知道如何过滤一个数据框架

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

然而,我想知道是否有一种方法可以做相反的事情:通过该集合的赞美来过滤数据帧。例:效果是

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

这可以通过DataFrame方法来完成吗?


当前回答

你可以使用Apply和Lambda:

df[df["col"].apply(lambda x: word not in x)]

或者如果你想定义更复杂的规则,你可以使用AND:

df[df["col"].apply(lambda x: word_1 not in x and word_2 not in x)]

其他回答

除了nanselm2的答案,你可以用0代替False:

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

你可以使用Apply和Lambda:

df[df["col"].apply(lambda x: word not in x)]

或者如果你想定义更复杂的规则,你可以使用AND:

df[df["col"].apply(lambda x: word_1 not in x and word_2 not in x)]

我希望答案已经贴出来了

我正在添加框架来查找多个单词,并从dataFrame中否定这些单词。

这里'word1','word2','word3','word4' =要搜索的模式列表

df = DataFrame

column_a = DataFrame df中的列名

values_to_remove = ['word1','word2','word3','word4'] 

pattern = '|'.join(values_to_remove)

result = df.loc[~df['column_a'].str.contains(pattern, case=False)]

要否定查询,请使用~。使用query的优点是直接返回df的有效观测值:

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

我也遇到了不(~)符号的麻烦,所以这里是另一个StackOverflow线程的另一种方式:

df[df["col"].str.contains('this|that')==False]