python - 使用多个条件屏蔽 DataFrame

标签 python pandas dataframe

我知道可以使用例如屏蔽掉数据框中的某些行

(1) mask = df['A']=='a'

其中 df 是手边的数据框,其中有一列名为 'A'。调用 df[mask] 会生成我的新“屏蔽”DataFrame。

当然也可以使用多个条件

(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) 显然会返回一个错误。

最佳答案

我会使用 Series.isin() :

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

df_new 是一个包含行的 DataFrame,其中 df["A"] 的条目出现在 filter 中。

关于python - 使用多个条件屏蔽 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25422733/

相关文章:

python - Pandas - 将行中的值设置为自身乘以另一个值

python - 如何将垂直和水平轴标签设置为粗体或字体

python - 解析 SOAP 通知

python - 使用 Scrapy 从文本文件中的多个 URL 中抓取所有外部链接

python - Multiindex Pandas Dataframe 中的多重赋值

python - my_dataframe.new_column = 值?

python - 将表数据抓取到 .csv 中

python - 在python中查找总和等于给定数字的不同子数组

r - 遍历数据框和变量名

python - Pandas 对分组数据执行操作