Я недавно задавал похожий вопрос, но сообщение об ошибке и проблема немного изменились.
Я хотел бы создать несколько списков, которые зависят от предыдущего списка, основываясь на положении элементов в каждом списке
Так, например, список 1 будет читать конкретный файл и возвращать либо число, либо логическое ложное значение на основе сравнения.
Затем второй список будет сравнивать число, отображаемое в той же позиции, что ите в предыдущем списке (если значение из предыдущего списка не было ложным) и возвращают значение или ложь на основе того же сравнения, что и в первом списке
Примеры фреймов данных:
a = pd.DataFrame([0,0.9,0.6,0.7,0.8])
b = pd.DataFrame([0.7,0.51,0.3,0.7,0.2])
Я создал функцию, которая выполняет эти сравнения и создает список
def generic_state_machine(file,obs_nums):
return file.ix[:,0][obs_nums] if file.ix[:,0][obs_nums] > 0.2 else False
obs_nums в этом контексте относится к позиции элемента в списке
Затем я создал списки, которые выглядятв разных файлах
session_to_leads = []
lead_to_opps = []
for i in range(1,len(a)):
session_to_leads.append(generic_state_machine(file=a,obs_nums=i))
lead_to_opps.append(generic_state_machine(file=b,obs_nums=i)) if session_to_leads != False else lead_to_opps.append(False)
Мне удалось разобраться с первоначальной ошибкой, с которой я столкнулся, единственная проблема сейчас заключается в том, что списокlead_to_opps не зависит от session_to_leads, поэтому, если в позиции 1 есть значение False, lead_to_opps не будет автоматически возвращать False в той же позиции. Итак, если предположить, что random.uniform (0,1) генерирует 0.5 все время, это мой текущий результат:
session_to_leads = [False,0.9,0.6,0.7,0.8]
lead_to_opps = [0.7,0.51,False,0.7,False]
Это мой желаемый результат:
session_to_leads = [False,0.9,0.6,0.7,0.8]
lead_to_opps = [False,0.51,False,0.7,False]