基于if条件执行数据帧的选择

问题描述 投票:0回答:1

当我打印以下内容时,它会选择正确的值: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))

pandas dataframe if-statement boolean condition
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.