首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >列出pandas数据框值的所有可能组合,以达到某个总和

列出pandas数据框值的所有可能组合,以达到某个总和
EN

Stack Overflow用户
提问于 2019-05-30 07:26:29
回答 1查看 1.4K关注 0票数 1

我有一个熊猫数据框架,看起来像这样:

代码语言:javascript
复制
party seats
A      34
B      26
C      19
D      12
E      10

总共有101个座位。我需要得到所有可能的政党组合的列表,这些政党在一起有51个或更多的席位。

例如,

代码语言:javascript
复制
[A, B]
[A, C]
[A, B, C]
[A, B, D]
...
[A, B, C, D, E]

或者像这样的东西。任何帮助或提示都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 08:11:44

既然你提到了“所有组合”,我认为你看到的不是一个最优的解决方案。唯一的可能性是使用暴力并生成所有政党组合,并选择总和大于51的政党。

这里有一个这样做的方法。

代码语言:javascript
复制
import pandas as pd
import numpy as np
import itertools

# Data Generation
alphabets = [chr(i) for i in range(ord('a'),ord('z')+1)]
party_size = 6
seats = 51
df = pd.DataFrame(np.random.randint(20,100,party_size), index=alphabets[:party_size])

#Algo
parties = df.index
a = []
for r in range(parties.shape[0]): # Generate combinations
    ls = list(itertools.combinations(parties, r))
    ls1 = [inx for inx in ls if df.loc[inx,:].sum()[0] > seats] # Choose only what qualifies
    a.extend(ls1) # Generate master list
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56369760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档