Ограничение умножения массива Python PULP - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь запустить задачу оптимизации, которую, похоже, не могу решить.Я новичок в Python.

У меня есть датафрейм с 8760 числами (0 - 1).Мне нужно умножить каждую строку в этом массиве на коэффициент, а затем сложить этот массив.Эта сумма должна быть равна х, 50000, например.Пример моего кода:

pp.prob = pp.LpProblem("P2g", pp.LpMinimize)
SolarCap = pp.LpVariable("SolarCap", lowBound=0)

pp.prob +=  SolarCap * 5

for i,j in enumerate(SolverWS['Solar']):
    x = j * SolarCap
    x = x + x 
    pp.prob += x == P2gprod

status = pp.prob.solve()

1 Ответ

0 голосов
/ 30 января 2019

Если я правильно понял, вам нужно умножить фрейм данных pandas, состоящий из n записей, на один и тот же коэффициент для каждой строки, а затем суммировать результирующий фрейм данных.

Вы можете использовать метод mul () Pandas Dataframes (документация здесь )

Что касается суммирования элементов, все, что вам нужно сделатьэто вызов sum () на фрейме данных .values ​​ property

Вот простой пример

import numpy as np
import pandas as pd
# Create a random dataframe of 10 columns and 876 rows with random float values between 0 and 1
df = pd.DataFrame(np.random.uniform(0,1,size=(876, 10)))
print(df)
print(df.values.sum())
other = 10
# See https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.multiply.html
df1 = df.mul(other)
# Alternatively, for just multiplying the whole dataframe
#df1 = df * 10
print(df1)
print(df1.values.sum())
...