我做了一些搜索,不知道如何过滤一个数据框架
df["col"].str.contains(word)
然而,我想知道是否有一种方法可以做相反的事情:通过该集合的赞美来过滤数据帧。例:效果是
!(df["col"].str.contains(word))
这可以通过DataFrame方法来完成吗?
我做了一些搜索,不知道如何过滤一个数据框架
df["col"].str.contains(word)
然而,我想知道是否有一种方法可以做相反的事情:通过该集合的赞美来过滤数据帧。例:效果是
!(df["col"].str.contains(word))
这可以通过DataFrame方法来完成吗?
当前回答
我也遇到了不(~)符号的麻烦,所以这里是另一个StackOverflow线程的另一种方式:
df[df["col"].str.contains('this|that')==False]
其他回答
我也遇到了不(~)符号的麻烦,所以这里是另一个StackOverflow线程的另一种方式:
df[df["col"].str.contains('this|that')==False]
为了补充上面的问题,如果有人想删除所有带字符串的行,可以这样做:
df_new=df[~df['col_name'].apply(lambda x: isinstance(x, str))]
你可以使用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)]
你可以使用反转(~)操作符(它的作用类似于布尔数据的not):
new_df = df[~df["col"].str.contains(word)]
其中new_df是RHS返回的副本。
Contains也接受正则表达式…
如果上面抛出ValueError或TypeError,原因很可能是因为你有混合数据类型,所以使用na=False:
new_df = df[~df["col"].str.contains(word, na=False)]
Or,
new_df = df[df["col"].str.contains(word) == False]