首页 > 解决方案 > 如何在 Pandas Dataframe 中根据多个条件进行过滤

问题描述

我有一个数据框:

    count       DATE           state    District     Gender     
0   1604.0      2020-03-11      AN      Nicobar      None   
1   13.0        2020-03-11      UP      Noida        Male   
2   4.0         2020-03-11      KA      Banglore     Female 
3   6.0         2020-03-11      PB      Chandigarh   None   
4   20.0        2020-03-11      MP      Indore       Female 

我必须同时根据 DATE、state、District 和 Gender 应用不同的过滤器。

  1. 将根据开始和结束日期条件过滤掉日期。

  2. 默认情况下,如果选择了任何特定的“状态”,则会显示所有“状态”,然后状态过滤器将与日期过滤器结合使用。

  3. 默认情况下,如果选择了任何特定的“地区”,则会显示所有“地区”,然后地区过滤器将与上述过滤器结合使用。

  4. 默认情况下,如果选择了任何特定的“性别”,则会显示所有“性别”,那么“性别”过滤器将与上述过滤器相结合。

如何应用上述组合在 pandas 数据框中的过滤器(一步组合查询并同时工作)?我目前使用 if-else 子句。任何人都可以建议我更好的方法吗?

标签: pythonpandasdataframe

解决方案


如果要根据列值选择 DataFrame 中的某些行,可以制作布尔掩码。例如:

mask = (df.A == 1) & (df.B > 3)
df[mask]

这只会选择 DataFrame 中 A == 1 且 B > 3 的行。


推荐阅读