【问题标题】:How to delete rows in python pandas DataFrame using regular expressions?如何使用正则表达式删除python pandas DataFrame中的行?
【发布时间】:2017-02-18 07:31:09
【问题描述】:

我有一个模式:

patternDel = "( \\((MoM|QoQ)\\))";

我想删除 pandas 数据框中 df['Event Name'] 列与此模式匹配的所有行。最好的方法是什么?数据框中有超过 100k 行。

【问题讨论】:

  • 需要明确的是,当您使用该字符串导入列时,除非它们是原始字符串,否则它们将被转换为 "( \((MoM|QoQ)\))"。包含数据样本有助于获得最佳答案。

标签: python regex pandas


【解决方案1】:

str.contains() 返回一系列布尔值,我们可以用它来索引我们的框架

patternDel = "( \\((MoM|QoQ)\\))"
filter = df['Event Name'].str.contains(patternDel)

我倾向于保留我们想要的东西而不是删除行。由于过滤器代表我们要删除的内容,我们使用~ 来获取所有不匹配的行并保留它们

df = df[~filter]

【讨论】:

  • 谢谢,这很好用。可能不应该使用关键字“filter”作为变量名,以避免混淆。
猜你喜欢
  • 2021-05-09
  • 2020-04-25
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 2020-10-27
相关资源
最近更新 更多