首页 > 解决方案 > 根据分组检查多个条件

问题描述

来自大表的示例示例表:

df = pd.DataFrame({'SiteLocation': ['1234 something street','1234 something street','1234 something street','1234 something street', '1234 something street','1234 something street', '567 other street', '567 other street', '567 other street', ],
          'Boolean': ['true','false','false','false','false','false', 'false','true','false'],
         'Active?': ['Cake-active','Pie-active','Cake-inactive','KeyLime-active', 'Vanilla Sundae-active', 'Pie-inactive', 'Cake-active','Cake-inactive','KeyLime-inactive']})
地点坐标 布尔值 积极的?
东西街1234号 真的 蛋糕活性
东西街1234号 错误的 馅饼活跃
东西街1234号 错误的 蛋糕不活跃
东西街1234号 错误的 KeyLime-active
东西街1234号 错误的 香草圣代-活性
东西街1234号 错误的 饼图不活跃
567 其他街道 错误的 蛋糕活性
567 其他街道 真的 蛋糕不活跃
567 其他街道 错误的 KeyLime 不活动

我的目标:我想创建一个“找到?” true如果 SiteLocation 有任何in columnBoolean并且不应该在 column中,则返回 'Found' 的Pie-ActiveActive?

在此示例中,SiteLocation '567 other street' 将被标记为 'found'。我的意思见下文:

地点坐标 布尔值 积极的? 成立?
东西街1234号 真的 蛋糕活性 未找到
东西街1234号 错误的 馅饼活跃 未找到
东西街1234号 错误的 蛋糕不活跃 未找到
东西街1234号 错误的 KeyLime-active 未找到
东西街1234号 错误的 香草圣代-活性 未找到
东西街1234号 错误的 饼图不活跃 未找到
567 其他街道 错误的 蛋糕活性 成立
567 其他街道 真的 蛋糕不活跃 成立
567 其他街道 错误的 KeyLime 不活动 成立

虽然在 column中1234 something street有,但是在 column中却不满足条件。trueBooleanActive?Pie-active

标签: pythonpandasdataframegrouping

解决方案


  1. 找到目标站点位置
  2. 然后用“找到”填充目标站点位置,其他用“未找到”
cond1 = df['Boolean'] == 'true'
cond2 = df['Active?'] == 'Pie-active'
site_list = set(df.loc[cond1, 'SiteLocation']) - set(df.loc[cond2, 'SiteLocation'])
df['Found?'] = np.where(df['SiteLocation'].isin(site_list), 
                        'Found', 'Not Found')

推荐阅读