代码之家  ›  专栏  ›  技术社区  ›  N08

通过与列表比较筛选出panda df的行[重复]

  •  1
  • N08  · 技术社区  · 6 年前

    以下问题经常发生。假设我有一个数据帧,其中一列可以取一个离散值:

    df = pd.DataFrame({'col1': [1, 2,3,4,5,6,7], 'col2': ["A", "B", "A", "C", "B", "A", "D"]})
    

    在这种情况下 col2 可以取值a、b或c。我只想在 COL2 不是 等于A或B。我想下面的语法可以用,

    df["col2"] not in ["A", "B"]
    

    但是,这给了我一个错误 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

    有没有一个简单的方法来过滤掉这些行?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mihai Alexandru-Ionut    6 年前

    你可以使用 isin 方法。

    df = df[~df.col2.isin(['A', 'B'])]
    

    产量

       col1 col2
    3     4    C
    6     7    D