在 pandas 的 DataFrame 上搜索“不包含”

新手上路,请多包涵

我已经做了一些搜索,但无法弄清楚如何过滤数据框

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

但是我想知道是否有相反的方法:通过该集合的恭维过滤数据框。例如:大意是

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

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

原文由 stites 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

您可以使用反转 (~) 运算符(它的作用类似于布尔数据的 not):

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

其中 new_df 是 RHS 返回的副本。

包含也接受一个正则表达式…


如果上面抛出 ValueError 或 TypeError ,原因可能是因为你有混合数据类型,所以使用 na=False

 new_df = df[~df["col"].str.contains(word, na=False)]

或者,

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

原文由 Andy Hayden 发布,翻译遵循 CC BY-SA 4.0 许可协议

我也遇到了 not (~) 符号的问题,所以这是来自另一个 StackOverflow 线程 的另一种方式:

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

原文由 nanselm2 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题