import pandas as pd import math subEmitColor = ["Wood", "Clothes storage bag"] file_path = './script/MergeData.xlsx' df = pd.read_excel(file_path, engine='openpyxl') df = df.drop(index=0) df_emitter = df[(df['Type'] == 'Emitter') & (df['Emit_Product'].notnull())] df_emitter = df_emitter.assign(Dynamic=df_emitter['Emit_Product']) # for index, row in df_emitter.iterrows(): # print(f"Index: {index}") # print(row['Emit_List']) # a1 = row['Emit_List'].split(',') # Product = row['Emit_Product'].split(',') # main = row['Emit_Product'].split(',')[0] # if len(a1) == 1: # a2 = a1[0].split('=') # color_values = df[df["Id"] == int(a2[0])]["Color"].values[0] # if color_values in subEmitColor: # print(f"Main: {main} - Sub: {color_values}") # else: # df_emitter.loc[index, 'Dynamic'] = f"{color_values}=0" # continue # d = {} # for i in Product: # d[i] = 0.0 # for i in a1 : # a2 = i.split('=') # color = df[df["Id"] == int(a2[0])]["Color"].values[0] # d[color] += float(a2[1])*(int(a2[0])%10) # c = {} # mainNum = d[main] # for k, i in d.items(): # if k == main: # c[k] = 0 # else: # x = round(mainNum/i) # c[k] = round(math.log(x, 2)) # print(df_emitter.head()) def getDynamicValue1(df, index): row = df.loc[index] d = {} Emit_List = row['Emit_List'].split(',') Product = row['Emit_Product'].split(',') main = row['Emit_Product'].split(',')[0] if len(Emit_List) == 1: a2 = Emit_List[0].split('=') color_values = df[df["Id"] == int(a2[0])]["Color"].values[0] d[color_values] = 0 return d else: for i in Product: d[i] = 0.0 for i in Emit_List : a2 = i.split('=') color = df[df["Id"] == int(a2[0])]["Color"].values[0] d[color] += float(a2[1])*(int(a2[0])%10) c = {} mainNum = d[main] for k, i in d.items(): if k == main: c[k] = 0 else: x = mainNum/i c[k] = math.floor(math.log(x, 2)) return c def getDynamicValueG(df, index): row = df.loc[index] d = {} Emit_List = row['Emit_List'].split(',') Product = row['Emit_Product'].split(',') main = row['Emit_Product'].split(',')[0] if len(Emit_List) == 1: a2 = Emit_List[0].split('=') color_values = df[df["Id"] == int(a2[0])]["Color"].values[0] d[color_values] = 0 return d else: for i in Product: d[i] = 0.0 for i in Emit_List : a2 = i.split('=') color = df[df["Id"] == int(a2[0])]["Color"].values[0] if color == "Clothes storage bag": d["Dress"] += float(a2[1])*(int(a2[0])%10) else: d[color] += float(a2[1])*(int(a2[0])%10) c = {} mainNum = d[main] for k, i in d.items(): if k == main: c[k] = 0 else: x = mainNum/i c[k] = math.floor(math.log(x, 2)) return c def getDynamicValue3(df, id): return df[df['Id'] == id]['Dynamic'].values[0] for index, row in df_emitter.iterrows(): if row['Emit_ID'] == 'I': d = getDynamicValueG(df, index) else: continue # if row['Emit_ID'] == 'B': # d = getDynamicValue1(df, index) # if row['Emit_ID'] == 'C': # d = getDynamicValue1(df, index) # if row['Emit_ID'] == 'D': # d = getDynamicValue1(df, index) # if row['Emit_ID'] == 'E': # d = getDynamicValue1(df, index) # if row['Emit_ID'] == 'F': # d = getDynamicValue1(df, index) # if row['Emit_ID'] == 'G': # d = getDynamicValue1(df, index) # if row['Emit_ID'] == 'H': # d = getDynamicValue1(df, index) # if row['Emit_ID'] == 'I': # d = getDynamicValue1(df, index) str = "" for i,j in d.items(): str += f"{i}={j}," str = str[:-1] print(str)