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

时间:2016-05-22 16:39:54

标签: python-2.7 pandas dataframe data-cleaning

我有一个名为df的pandas数据框,其中包含多个列和一个df['MY STATE']列。我的目标是从数据框中删除不包含US状态的所有行。我想通过将单元格中的值与包含所有州缩写的pandas系列进行比较来实现此目的。我见过人们使用类似下面的内容来清理数据帧:

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

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

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

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

我已经读过df.query()可以用来做这样的事情,但我还没有找到一个例子,并且还读到df.query()当有空格时不能使用{{1}}列的名称。

谢谢,

迈克尔

1 个答案:

答案 0 :(得分:2)

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

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