如何检查DataFrame各分组Indicator列是否含1并返回无1的分组
解决思路
核心逻辑是按字母分组后判断每组的Indicator列是否完全没有1,步骤如下:
- 按
Letter字段对DataFrame分组,每个分组对应同一个字母的全部行 - 对每个分组的
Indicator列做聚合校验:只要该列存在1就排除,否则保留对应的字母 - 最终输出保留的字母即可
代码实现
首先导入pandas并构造示例DataFrame:
import pandas as pd df = pd.DataFrame({ 'Letter': ['A','A','A','B','B','C','C','C','C'], 'Indicator': [0,1,0,0,0,0,0,1,0] })
两种常用实现方式:
方式1:用max聚合判断
因为Indicator取值只有0和1,分组后的最大值为0就说明该组从来没有出现过1:
group_max = df.groupby('Letter')['Indicator'].max() res = group_max[group_max == 0].index.tolist() print(res) # 输出结果:['B']
方式2:用any聚合反向筛选
any()方法只要组内存在1就返回True,对结果取反就能拿到从来没有1的分组:
has_one = df.groupby('Letter')['Indicator'].any() res = has_one[~has_one].index.tolist() print(res) # 输出结果:['B']
如果只需要返回单个字母值,直接取res[0]即可得到B。
内容的提问来源于stack exchange,提问作者Anrich
相关产品推荐
相关产品推荐

