在Pandas中按分组计算列值乘积并赋值至组内所有行的方法
解决方案:用分组变换实现零件整体合格标记
这其实是个很典型的分组广播需求,用pandas的groupby.transform就能轻松搞定,完全符合你说的按组计算乘积再赋值给所有行的思路:
步骤1:构造示例数据(如果你的数据已经存在可以跳过)
先模拟一下你的DataFrame结构,方便演示效果:
import pandas as pd data = { 'part': ['A001', 'A001', 'A002', 'A002', 'A003'], 'test': ['耐压测试', '导通测试', '耐压测试', '绝缘测试', '功能测试'], 'test_pass': [1, 1, 1, 0, 1] } df = pd.DataFrame(data)
步骤2:核心代码实现需求
直接按part分组,对test_pass列计算乘积,再用transform把结果广播到组内每一行:
df['part_pass'] = df.groupby('part')['test_pass'].transform('prod')
为什么这个方法有效?
prod()方法会计算组内所有test_pass的乘积:只要组里有一个0,乘积结果就是0;如果所有测试都通过(全1),乘积结果就是1,完美匹配你需要的part_pass规则。transform()的作用是把分组计算出的单一结果,复制到该组的每一行中,这样同一个零件的所有行都会得到相同的part_pass值。
运行后的结果
执行完代码后,你的DataFrame会变成这样:
| part | test | test_pass | part_pass |
|---|---|---|---|
| A001 | 耐压测试 | 1 | 1 |
| A001 | 导通测试 | 1 | 1 |
| A002 | 耐压测试 | 1 | 0 |
| A002 | 绝缘测试 | 0 | 0 |
| A003 | 功能测试 | 1 | 1 |
内容的提问来源于stack exchange,提问作者Chandu
相关产品推荐
相关产品推荐

