Pandas技术问题:如何筛选TEST_STATUS为PASS TEST的数据并分组
问题解决方法
首先,你之前的代码data_useless.groupby(['TEST_STATUS'] == 'PASS TEST')报错的原因是:['TEST_STATUS'] == 'PASS TEST'是将列名字符串列表与字符串做比较,得到的是布尔值False,Pandas会把这个False当成分组键,后续操作自然找不到对应的分组,所以抛出Key Error: FALSE。
要实现你给出的SQL效果,有两种常用方法:
方法一:先筛选再分组(匹配SQL逻辑)
先筛选出TEST_STATUS为"PASS TEST"的数据,再按TEST_STATUS分组,之后可以用get_group获取该分组的所有数据:
# 筛选+分组 pass_group = data_useless[data_useless['TEST_STATUS'] == 'PASS TEST'].groupby('TEST_STATUS') # 获取分组内的全部数据 pass_data = pass_group.get_group('PASS TEST') print(pass_data)
方法二:直接筛选(更高效,因为分组后仅一个组)
你的SQL语句里GROUP BY TEST_STATUS没有聚合操作,本质就是获取所有符合WHERE条件的行,所以可以直接跳过分组,直接筛选:
pass_data = data_useless[data_useless['TEST_STATUS'] == 'PASS TEST'] print(pass_data)
另外补充:你之前统计数量的代码里,count_values()大概率是笔误,正确的统计分组数量写法通常是:
data_useless[['TEST_TYPE', 'TEST_STATUS']].groupby('TEST_STATUS').count() # 或者更简洁的 data_useless['TEST_STATUS'].value_counts()
内容的提问来源于stack exchange,提问作者Tristianto Raflesia
相关产品推荐
相关产品推荐

