def binarize(df,cols,kpi_axis,time_axis,order):
cols = cols.drop([kpi_axis,time_axis])
features = []
for k in range(0,order):
features.append(cols)
fs = []
for f in itertools.product(*features):
# list(set(f)).sort()
f = np.unique(f)
fs.append(tuple(f))
fs = tuple(set(i for i in fs))
print(fs)
for f in fs:
print(len(f))
states =[]
for d in f:
states.append(tuple(set(df[d].astype('category'))))
for state in itertools.product(*states):
z = 1
name = str()
for d in range(0,len(f)):
z = z*df[f[d]]==state[d]
name += f[d] + " == " +str(state[d])
if d<len(f)-1:
name += " AND "
df[name] = z
for d in cols:
df = df.drop([d],axis = 1)
return df