Вы можете использовать itertools
здесь:
import pandas as pd
import itertools
import numpy as np
numbers = np.array([10,15,60,45,37,28])
df = pd.DataFrame(numbers, columns= ['Num'])
total = int(df.sum())
list_n = list(df['Num'])
for L in range(0, len(list_n)+1):
for subset in itertools.combinations(list_n, L):
if sum(subset) > 0.7 * total:
print(subset)
(60, 45, 37)
(10, 60, 45, 37)
(10, 60, 45, 28)
(15, 60, 45, 37)
(15, 60, 45, 28)
(15, 60, 37, 28)
(60, 45, 37, 28)
(10, 15, 60, 45, 37)
(10, 15, 60, 45, 28)
(10, 15, 60, 37, 28)
(10, 60, 45, 37, 28)
(15, 60, 45, 37, 28)
(10, 15, 60, 45, 37, 28)
Конечно, вы можете полностью пропустить pandas:
import itertools
import numpy as np
numbers = np.array([10,15,60,45,37,28])
total = sum(numbers)
for L in range(0, len(numbers)+1):
for subset in itertools.combinations(numbers, L):
if sum(subset) > 0.7 * total:
print(subset)
(60, 45, 37)
(10, 60, 45, 37)
(10, 60, 45, 28)
(15, 60, 45, 37)
(15, 60, 45, 28)
(15, 60, 37, 28)
(60, 45, 37, 28)
(10, 15, 60, 45, 37)
(10, 15, 60, 45, 28)
(10, 15, 60, 37, 28)
(10, 60, 45, 37, 28)
(15, 60, 45, 37, 28)
(10, 15, 60, 45, 37, 28)