Pulp Python – установка ограничений соотношения из фрейма данных PandasPython

Программы на Python
Anonymous
Pulp Python – установка ограничений соотношения из фрейма данных Pandas

Сообщение Anonymous »

Я пытаюсь добавить ограничения к задаче максимизации. Допустим, у меня есть такой фрейм данных:

Код: Выделить всё

df = pd.DataFrame({'id':[1,2,3,4,5,6,7,8,9,10], 'somethingElse':['a','b','c','d','e','f','g','h','i','j'], 'car_type':['honda','honda','bmw','honda','vw','vw','kia','ferrari','mercedes','honda']})
df = df.set_index(['id','somethingElse'])
В этой задаче строка либо выбирается, либо нет. Я создал флаги:

Код: Выделить всё

flag = LpVariable.dicts('flag', ((id, somethingElse) for id, somethingElse in df.idnex), cat = 'Binary')
Но я не понимаю, как добавить ограничения для чего-то вроде «Процент выбранных Honda должен составлять 20% (или 18-22%)». Я пробовал начать с чего-то вроде:

Код: Выделить всё

lpSum([(flag[i[0], i[1])]*df.loc[(i[0], i[1]), 'car_type'] for i in df.index])
но это не работает. Будем благодарны за любую помощь!
В этой задаче строка либо выбирается, либо нет. Я создал флаги:

Код: Выделить всё

flag = LpVariable.dicts('flag', ((id, somethingElse) for id, somethingElse in df.idnex), cat = 'Binary')
Но я не понимаю, как добавить ограничения для чего-то вроде «Процент выбранных Honda должен составлять 20% (или 18-22%)». Я пробовал начать с чего-то вроде:

Код: Выделить всё

lpSum([(flag[i[0], i[1])]*df.loc[(i[0], i[1]), 'car_type'] for i in df.index])
но это не работает. Любая помощь будет оценена по достоинству!

Подробнее здесь: https://stackoverflow.com/questions/788 ... -dataframe

Вернуться в «Python»