根据if条件执行数据框选择

时间:2019-04-18 11:58:55

标签: pandas dataframe if-statement boolean conditional-statements

当我打印以下内容时,它会选择正确的值: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()。-错误)。我不希望any()或all(),因为我希望对数据帧的每一行做出决定。

我想根据每个时隙的Pdem大小(T =总小时数)为每个时隙的Gurobi设置不同的Pb约束。我已经尝试了各种方法,例如loc(如下所示),迭代和正则布尔表达式。

任何建议将不胜感激。

更新:以下是窍门

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))

1 个答案:

答案 0 :(得分:0)

也许您正在寻找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)
相关问题