python - 列出 pandas 数据帧值的所有可能组合以达到一定的总和

标签 python pandas

我有一个 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/

相关文章:

python - Pandas DataFrame 列到数据透视表中的单元格

python - Python 中的合并排序 - RuntimeError : maximum recursion depth exceeded

python - 在 Python 中查找字符串中多个字符的最后一次出现

python - sys.exit() GCP 云函数

python - dask 和 pandas 数据框中的嵌套 numpy 数组

sql - 如何重命名由SQL INNER JOIN获得的列?

python - 使用字典在 pandas 列中填充 NaN

python - 从 Excel 导出的 Pandas DateTime 中删除时间

python - 具有多种状态的 Pygame 动画

python - 求最小值和最大值等函数,pandas 系列