Python pandas按列groupby后判断分组内是否存在False值如何实现
Pandas 分组新增指定规则列实现方案
你可以通过groupby配合all()方法实现需求,核心逻辑是利用all()的特性:只要序列中存在一个False,返回结果就是False,全为True才会返回True,完全匹配你定义的column 4生成规则。
场景1:未执行column 1+column 2分组取首行时(更推荐)
建议先计算column 4再做分组取首行,避免聚合后丢失column 3的原始数据导致计算偏差:
# 1. 按column 1分组,生成column 4的映射规则 col4_rule = dff.groupby('column 1')['column 3'].all() # 2. 将规则映射到原表生成column 4 dff['column 4'] = dff['column 1'].map(col4_rule) # 3. 执行你原有的分组取首行逻辑 dff = dff.groupby(["column 1", "column 2"]).first().reset_index() print(dff)
场景2:已执行column 1+column 2分组取首行后
如果已经完成分组聚合,需要基于聚合后的column 3计算,用transform方法直接生成同长度的结果列即可:
# 若分组后为多级索引,先重置索引 dff = dff.reset_index() # 按column 1分组直接生成column 4 dff['column 4'] = dff.groupby('column 1')['column 3'].transform('all') print(dff)
注意事项
如果你的column 3存储的是字符串格式的"True"/"False",请先转换为布尔类型再执行上述逻辑:
dff['column 3'] = dff['column 3'].astype(bool)
内容的提问来源于stack exchange,提问作者jatashankar shukla
相关产品推荐
相关产品推荐

