如何在数组中匹配标签值并对对应w_score求和计算p_score
跨列标签匹配加权求和计算p_score方案
需求规则明确
- 表格B、C、D、E列为标签存储列,不同列、不同行的标签值可能重复
- F列为每行预分配的w_score权重分值
- G列为B、C、D、E四列所有标签去重后得到的唯一标签清单
- H列待计算的p_score规则:遍历所有数据行,只要某行的B/C/D/E任意一列单元格值等于当前计算的唯一标签,就将该行F列的w_score计入总和,累加结果即为该标签的p_score。例如标签
git出现在4行中,对应w_score分别为10、8.5、5、4.5,最终p_score为28。
表格端直接计算方法(Excel/WPS表格/Google Sheets通用)
在H列对应G列第一个标签的单元格(例如G列从G2开始存标签,就选中H2)输入以下公式,输入完成后下拉填充整列即可批量算出所有标签的p_score:
=SUMPRODUCT(--(B:E=G2)*F:F)
公式逻辑拆解:
B:E=G2会逐单元格判断是否匹配当前标签,匹配返回逻辑值TRUE,不匹配返回FALSE- 前缀
--将逻辑值转为可计算的数字:TRUE转为1,FALSE转为0- 与F列分值做矩阵运算后求和,只要某行有任意一列匹配标签,就会自动累加该行的w_score,完全符合计算规则
如果你的数据有固定有效范围(例如第2行到第200行是正式数据,第1行是表头),建议把范围写死提升计算效率,公式可调整为=SUMPRODUCT(--(B2:E200=G2)*F2:F200)
Python pandas批量处理代码
如果需要用脚本处理大批量表格数据,可以直接用以下代码实现:
import pandas as pd # 替换为你的表格读取逻辑,例如pd.read_excel("你的文件路径.xlsx") df = pd.read_excel("data.xlsx") tag_columns = ["B", "C", "D", "E"] # 逐唯一标签计算p_score df["H"] = df["G"].apply( lambda current_tag: df.loc[df[tag_columns].eq(current_tag).any(axis=1), "F"].sum() ) # 结果保存回文件 df.to_excel("result.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Ankur Lakra
相关产品推荐
相关产品推荐

