我知道可以使用例如
屏蔽数据帧中的某些行(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)显然会返回错误。
答案 0 :(得分:5)
我会使用Series.isin()
:
filter = ['a', 'b', 'c', 'd']
df_new = df[df["A"].isin(filter)]
df_new
是一个DataFrame,其中df["A"]
的条目显示在filter
中。