You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中基于多列值组合查找匹配目标值的列组合

实现方案

核心思路

逐行生成所有非空列名组合,计算组合对应列的数值和,筛选出和等于目标值的组合即可,全程仅读取原DataFrame数据,不会修改原始内容。

实现代码

import pandas as pd
import numpy as np
from itertools import combinations

# 目标和可按需调整
TARGET_SUM = 9
# 提前提取列名避免重复计算
cols = df.columns.tolist()
col_count = len(cols)

def match_column_combination(row):
    matched = []
    # 遍历所有长度的列组合(从单列到全部列)
    for length in range(1, col_count + 1):
        for combo in combinations(cols, length):
            if sum(row[col] for col in combo) == TARGET_SUM:
                matched.append(list(combo))
    # 无匹配返回False,有匹配返回所有组合列表
    return matched if matched else False

# 逐行处理得到结果
result = df.apply(match_column_combination, axis=1)

输出验证

你可以直接打印result查看每行的匹配结果,和要求的输出规则完全一致:

  • 行0输出:[['One', 'Two']]
  • 行1输出:[['One', 'Two'], ['One', 'Three'], ['One', 'Four']]
  • 行2输出:False
  • 行3输出:[['Four']]

优化说明

如果你的DataFrame列数较多,可以增加剪枝逻辑:组合求和过程中如果已经超过目标值,直接跳过后续更长的包含该组合的计算,可大幅提升运算效率。

内容的提问来源于stack exchange,提问作者Akmal Soliev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:24:03