如何修改Pandas代码实现基于多条件的ID级score批量标记?
问题解决:根据多条件标记分组内的score值
原代码仅判断了condition2等于'pass'的情况,未覆盖'level_1'这个条件,因此无法对包含level_1的ID(比如示例中的ID B)正确标记所有行的score为1。
你需要将判断条件扩展为同时检查'pass'和'level_1',有两种简洁的修改方式:
方式1:使用isin()方法(推荐,多条件时更简洁)
df['score'] = df.groupby('Id')['condition2'].transform(lambda x: x.isin(['pass', 'level_1']).any().astype(int))
方式2:使用逻辑或(|)连接多个条件
df['score'] = df.groupby('Id')['condition2'].transform(lambda x: (x.eq('pass') | x.eq('level_1')).any().astype(int))
修改说明:
- 核心是将单一条件判断扩展为包含
'pass'和'level_1'的多条件检查 any()用于判断当前ID分组内是否存在至少一行符合条件astype(int)将布尔值(True/False)转换为对应的整数1/0
修改后运行代码,就能得到你期望的结果:ID A、B的所有行score标记为1,ID C、D的score保持0。
内容的提问来源于stack exchange,提问作者Roshankumar
相关产品推荐
相关产品推荐

