Python 如何在pandas中基于groupby进行过滤逻辑

Python 如何在pandas中基于groupby进行过滤逻辑,python,pandas,Python,Pandas,假设我有一个df,看起来像这样: df=pd.DataFrame({'Data1':['A','A','A','A','B','B'], '数据2':[100100200101100100], “状态”:[“开”、“开”、“关”、“关”、“开”、“关”], “计数”:[2,2,1,1,1,1,1], ‘总计’:[25,25,25,150,150]}) 如何添加条件并过滤掉传递的数据 对于Data1和Data2的每个唯一组合,检查有多少个“打开”状态,以及每个唯一组合的“打开”状态量是否小于某

假设我有一个df,看起来像这样:


df=pd.DataFrame({'Data1':['A','A','A','A','B','B'],
'数据2':[100100200101100100],
“状态”:[“开”、“开”、“关”、“关”、“开”、“关”],
“计数”:[2,2,1,1,1,1,1],
‘总计’:[25,25,25,150,150]})
如何添加条件并过滤掉传递的数据

对于Data1和Data2的每个唯一组合,检查有多少个“打开”状态,以及每个唯一组合的“打开”状态量是否小于某些阈值

条件:

  • 如果总数>0,我需要至少1个“打开”

  • 如果总数>100,我需要至少2个“打开”

所以我的结果应该是这样的:

    +-------+-------+-------+--------+-------+
    | Data1 | Data2 | State | Count  | Total |
    +-------+-------+-------+--------+-------+
    | A     |   200 | Off   |      1 |    25 |
    | A     |   101 | Off   |      1 |    25 |
    | B     |   100 | On    |      1 |   150 |
    | B     |   100 | Off   |      1 |   150 |
    +-------+-------+-------+--------+-------+
注意事项:

  • “计数”列已经计算了有多少“开”或“关”用于 数据1和数据2的每个唯一组合
  • 每个唯一数据的总计相同1
我觉得这可以由一些小组通过过滤来完成?我只是不知道该怎么做。提前谢谢你的帮助

    +-------+-------+-------+--------+-------+
    | Data1 | Data2 | State | Count  | Total |
    +-------+-------+-------+--------+-------+
    | A     |   200 | Off   |      1 |    25 |
    | A     |   101 | Off   |      1 |    25 |
    | B     |   100 | On    |      1 |   150 |
    | B     |   100 | Off   |      1 |   150 |
    +-------+-------+-------+--------+-------+