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

如何在pandas DataFrame中查找所有可能组合并计算对应总和

Pandas实现DataFrame所有多元素组合求和方案

核心思路

  • 基于组合生成逻辑,遍历所有元素个数≥2的Sno值组合,排除单元素场景
  • 对每个组合匹配对应的No字段值做求和计算
  • 将组合内Sno用逗号拼接、对应求和结果组装为新行,最终合并为结果DataFrame

完整实现代码

import pandas as pd
from itertools import combinations

# 示例输入数据
df = pd.DataFrame({
    'Sno': ['A', 'B', 'C'],
    'No': [1, 2, 3]
})

res_list = []
# 组合长度从2开始,覆盖到所有元素的全组合
for length in range(2, len(df) + 1):
    # 生成对应长度的所有索引组合
    for idx_group in combinations(df.index, length):
        group_data = df.loc[list(idx_group)]
        res_list.append({
            'Sno': ','.join(group_data['Sno']),
            'No': group_data['No'].sum()
        })

# 转换为输出DataFrame
result_df = pd.DataFrame(res_list)

运行结果

执行代码后得到的result_df完全匹配预期输出:

Sno  No
0    A,B   3
1    A,C   4
2    B,C   5
3  A,B,C   6

适配说明

  • 方案自动适配任意行数的输入DataFrame,无需手动调整组合长度
  • 若需要包含单元素的组合结果,仅需将组合长度遍历的起始值从2改为1即可
  • 组合为无重复的无序组合,不会出现A,B和B,A重复计算的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 09:51:30