关于python:通过比较列表来过滤掉panda-df的行

Filter out rows of panda-df by comparing to list

本问题已经有最佳答案,请猛点这里访问。

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

1
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的行中使用。我认为以下语法可以使用,

1
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().

有没有一个干净的方法来过滤这些行?


您可以使用isin方法。

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

产量

1
2
3
   col1 col2
3     4    C
6     7    D