【问题标题】:How to delete rows in a pandas dataframe if they contain values from a list? [duplicate]如果熊猫数据框中的行包含列表中的值,如何删除它们? [复制]
【发布时间】:2018-05-08 00:23:34
【问题描述】:

我有一个看起来像这样的 pandas 数据框:

    Beer            Rating
0   Heineken        Good
1   Budweiser       Bad
2   Coors Light     Bad

还有一个如下所示的列表:

bad_beers = ["Light", "0.0%"]

如何从列表中删除包含给定字符串的 pandas 数据框中的每一行?

所需的输出应如下所示:

    Beer       Rating
0   Heineken   Good
1   Budweiser  Bad

【问题讨论】:

  • 这个例子的重点是列,我的重点是行
  • 我不这么认为...最佳答案是按行过滤。

标签: python list pandas


【解决方案1】:

我们可以使用str.contains

df[~df.Beer.str.contains('Light')]
Out[364]: 
        Beer Rating
0   Heineken   Good
1  Budweiser    Bad

如果列表包含更多项目,使用 | .

df[~df.Beer.str.contains('Light|Heineken')]
Out[365]: 
        Beer Rating
1  Budweiser    Bad

【讨论】:

  • 如果你想对每一列都这样做呢?排除“啤酒”不起作用。你可以使用相同的语法吗?还是使用 lambda 更好?
  • @ApoloRadomer 我会推荐应用 lambda
  • 我会提出一个问题。因为我不能使用 col 名称。我没有在数据框中定义它们。
猜你喜欢
  • 1970-01-01
  • 2019-06-19
  • 2016-09-09
  • 1970-01-01
  • 2017-09-27
  • 2021-11-18
  • 2022-11-27
  • 1970-01-01
  • 2021-02-16
相关资源
最近更新 更多