当我打印以下内容时,它会选择正确的值:df[(df['Pdem']>0)].
但是,我无法将其设置为if条件(没有ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
。 - 错误),它在正确的时隙设置约束。我不希望任何()或所有(),因为我希望决定每行的数据帧。
我想基于每时隙Pdem的大小(T =总小时),在每个时隙的Gurobi中设置不同的Pb约束。我尝试了各种各样的东西,比如loc(如下所示),iterrows和常规布尔表达式。
任何建议将不胜感激。
更新:以下是诀窍
model.addConstrs(((Pgen [t] - Pdem[t]) < 0) >> 0 <= P_grid_b[t] <= Pgridmax for t in range(T))
model.addConstrs((Pdem[t] == 0) >> 0 <= P_grid_b[t] <= 0 for t in range(T))
也许你正在寻找apply
方法。
import pandas as pd
import numpy as np
np.random.seed(42)
df = pd.DataFrame(np.random.uniform(-1.0,1.0,(10,2)), columns= ["a", "b"])
def my_func_disch(x):
if x >= 0 and x < 0.2:
eff_disch = 0.1
elif x >= 0.2:
eff_disch = 0.3
else:
eff_disch = 0.8
return eff_disch
df["eff_disch"] = df.a.apply(my_func_disch)