首页 > 解决方案 > 如何在多列上同时按条件列表过滤 DataFrame 行

问题描述

我有一个 DataFrame,我想在其中过滤行,应用同时适用于两列的条件列表。例如:

pd.DataFrame({'A':['Y','Y','Y','Z','Z'],'B':[1,2,2,3,4],'C':[100,200,234,358,4243]})
   A  B     C
0  Y  1   100
1  Y  2   200
2  Y  2   234
3  Z  3   358
4  Z  4  4243
filter_on=[('Y',2),('Z',4)]

当过滤AB在filter_on有任何几个值时,我应该得到以下 DataFrame:

   A  B     C
1  Y  2   200
2  Y  2   234
4  Z  4  4243

标签: pythonpandasfiltermultiple-columns

解决方案


isin转换为后尝试tuple

out = df[df[['A','B']].apply(tuple,1).isin(filter_on)].copy()
   A  B     C
1  Y  2   200
2  Y  2   234
4  Z  4  4243

推荐阅读