Мне нужно использовать строку, чтобы определить, какие вычисления нужно выполнить. Я пытаюсь использовать диспетчерский стол вместо элифовой лестницы. Мне нужно запустить несколько однострочников, несколько многострочных функций, и мне нужно запустить функцию, основанную на части входящего состояния.
Этот код упрощен для объяснения. Первые 4 функции работают, а последние 3 - нет.
<!-- language: python -->
Fun = functions.get(reference, lambda : print('Invalid Ref'))
fun(my_df, start, stop)
def Ripple(df, start, stop):#Some multi-line function
temp = df.trc3_s12_db[df.index >= start, df.index <= stop]
return temp.values.max() - temp.values.min()
def RAve(df, start, stop, ave, spacing=100):#Changing function
return df.trc3_s12_db.rolling(ave*spacing).[df.index >= start, df.index <= stop].min()
functions = { #Dispatch Table
'MinA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.min() * (-1),
'MaxA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.max() * (-1),
'MinB': lambda df, start, stop: df[df.index >= start, df.index <= stop].tB.min() * (-1),
'Ripple': Ripple,
'5MHz Ave': RAve(ave=5),
'2.2MHz Ave': RAve(ave=2.2),
'%dMHz Ave': RAve(ave=%d) #Is this possible?
}
Я знаю, что могу передавать функции и аргументы, используя набор, но тогда вся таблица должна быть набором. Могу ли я передать переменные через форматирование строки в таблицу диспетчеризации? Как лучше всего разобраться в этих возможностях?