使用多个条件屏蔽DataFrame

时间:2014-08-21 09:25:16

标签: python pandas dataframe

我知道可以使用例如

屏蔽数据帧中的某些行
(1) mask = df['A']=='a'

其中 df 是手头有一个名为' A' 的列的数据框。调用 df [mask] 会产生我的新"蒙面"数据帧。

当然也可以使用多个标准

(2) mask = (df['A']=='a') | (df['A']=='b')

当有几个标准需要满足时,最后一步可能会有点乏味,例如

(3) mask = (df['A']=='a') | (df['A']=='b') | (df['A']=='c') | (df['A']=='d') | ...

现在,假设我的数组中的过滤条件为

(4) filter = ['a', 'b', 'c', 'd', ...]
    # ... here means a lot of other criteria

有没有办法使用单线程获得与上面(3)中相同的结果?

类似的东西:

(5) mask = df.where(df['A']==filter)
    df_new = df[mask]

在这种情况下(5)显然会返回错误。

1 个答案:

答案 0 :(得分:5)

我会使用Series.isin()

filter = ['a', 'b', 'c', 'd']
df_new = df[df["A"].isin(filter)]

df_new是一个DataFrame,其中df["A"]的条目显示在filter中。