如果给定列中的值不包含在列表中,则删除 pandas 数据框行

Deleting pandas dataframe rows if value in given column not contained in a list

我有一个名为 df 的 pandas 数据框,其中包含多个列和一个 df['MY STATE'] 列。我的目标是从数据框中删除不包含美国各州的所有行。我想通过将单元格中的值与包含所有州缩写的 pandas 系列进行比较来做到这一点。我见过人们使用类似下面的东西来清理数据框:

df = df[df['COST'] <= 0]

但是我需要的东西(如下)不起作用

df = df[df['MY STATE'] not in states['Abbreviation'].values]

有没有办法简单地做到这一点?

我读到 df.query() 可以用来做这样的事情,但我还没有找到一个例子,并且还读到 df.query() 不能在有 space 在列名中。

谢谢,

迈克尔

IIUC 您可以将 isin 与逆运算符一起使用 ~:

df = df[~df['MY STATE'].isin(states['Abbreviation'].values)]