我有一个 pandas 数据框,如下所示:
party seats
A 34
B 26
C 19
D 12
E 10
总共有 101 个座位。我需要获取所有可能的政党组合的列表,这些政党总共有 51 个或更多席位。
例如,
[A, B]
[A, C]
[A, B, C]
[A, B, D]
...
[A, B, C, D, E]
或者类似的东西。任何帮助或提示将不胜感激。
最佳答案
既然您提到了“所有组合”,我认为您并不是在寻找一种最佳解决方案。唯一的可能是暴力破解并生成所有各方组合并选择总和大于 51 的组合。
这是一种实现方法。
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
关于python - 列出 pandas 数据帧值的所有可能组合以达到一定的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369760/