Pandas:查找B列中总和等于A列值的元素组合及对应索引
基于Pandas的降序列子集和匹配规则
基础数据定义
待处理对象为包含A、B两列的Pandas数据表:
- A列:逐行存储当前行需要匹配的目标求和值
- B列:预先按降序排列的候选数值列,所有可选取值均来自该列
匹配判定规则
- 从B列中选取若干元素,使元素总和与当前行A列的目标值完全相等
- 匹配成功时返回所选元素对应的B列原始索引;不存在完全匹配的求和组合时,直接返回
-1 - 多组结果同时满足要求时,优先选取数值整体更大的元素组合
- 结合实际业务的数据特征,业务场景中几乎不会出现多组满足要求的组合,无需设计复杂的组合优先级判断逻辑
典型匹配示例
- 示例1:当A列目标值为100,B列数值依次为80、60、50、50时,合规组合为两个50,对应B列索引
[2, 3] - 示例2:当A列目标值为120,B列数值依次为80、50、30、20、10时,合规组合为80、30、10,对应B列索引
[0, 2, 4]
内容的提问来源于stack exchange,提问作者Debadri Dutta
相关产品推荐
相关产品推荐

