Как использовать SciPy для оптимизации функции с несколькими ограничениями - PullRequest
1 голос
/ 20 июня 2019

У меня есть три кадра данных Pandas с такими же столбцами, как указано ниже:

df1 = pandas.DataFrame(data = {'A' : ["a", "b", "c", "d", "e"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [10, 11, 12, 13, 14]}) 
df2 = pandas.DataFrame(data = {'A' : ["a", "b", "c"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [30, 31, 32]}) 
df3 = pandas.DataFrame(data = {'A' : ["a", "b", "c", "d"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [50, 51, 52, 53]}) 

У меня есть четвертый кадр данных, в котором количество строк соответствует номеру кадра, который у меня есть, поэтому здесь у меня есть 3 строки, затем 3 кадра данных.

dfZ = pandas.DataFrame(data = {'Z' : [1, 2, 3]}) 

То, что я пытаюсь сделать, - это вычислить четвертый столбец, который в основном представляет собой столбец C, деленный на столбец B. Я хочу, чтобы из списка значений в каждой строке столбца B было выбрано одно значение для каждой строки, и это одно значение следует использовать для всех фреймов данных (то есть, если я выберу 0,5 для индекса 'a', то это значение следует использовать для все кадры данных с индексом «а», но выбор должен удовлетворять этим условиям

df1.sum() == dfZ['Z'].iloc[0] # tolerence 10 to 20%
df2.sum() == dfZ['Z'].iloc[1] # tolerence 10 to 20%
df2.sum() == dfZ['Z'].iloc[2] # tolerence 10 to 20%

Осмотр кажется, что это проблема оптимизации, но я не знаю, как использовать SciPy для ее решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...