Вы можете создать список комбинаций с размером варианта.
import itertools
l=[] # final list
ll = list('ABCD') # list of letters
for L in range(0, len(ll)+1):
for subset in itertools.combinations(ll, L):
l.append(''.join(subset))
del(l[0]) # remove the empty string ''
print(l)
['A', 'B', 'C', 'D', 'AB', 'AC', 'AD', 'BC', 'BD', 'CD', 'ABC', 'ABD', 'ACD', 'BCD', 'ABCD']
Вы используете фрейм данных следующим образом:
df = pd.DataFrame({
'A':[5,3,6,9,2,4],
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
})
Тогда вы можете использовать этот код:
l=['A', 'B', 'C', 'D', 'AB', 'AC', 'AD', 'BC', 'BD', 'CD', 'ABC', 'ABD', 'ACD', 'BCD', 'ABCD']
for i in l:
if(len(i)>1):
df[i]=1 # set the initial value to 1
for i in l:
if(len(i)>1):
plets=list(i)
for p in plets:
df[i]*=df[p] #makes the product based on columns name disolver
print(df)
A B C D AB AC AD BC BD CD ABC ABD ACD BCD ABCD
0 5 4 7 1 20 35 5 28 4 7 140 20 35 28 140
1 3 5 8 3 15 24 9 40 15 24 120 45 72 120 360
2 6 4 9 5 24 54 30 36 20 45 216 120 270 180 1080
3 9 5 4 7 45 36 63 20 35 28 180 315 252 140 1260
4 2 5 2 1 10 4 2 10 5 2 20 10 4 10 20
5 4 4 3 0 16 12 0 12 0 0 48 0 0 0 0