выполнить выбор кадра данных на основе условия if - PullRequest
0 голосов
/ 18 апреля 2019

Когда я печатаю следующее, он выбирает правильные значения: 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(). -), которое устанавливает ограничения в правильные временные интервалы. Я не хочу никаких () или всех (), поскольку я хочу, чтобы решение принималось для каждой строки информационного кадра.

Я хотел бы установить различные ограничения для Pb в Gurobi для временного интервала на основе размера Pdem для временного интервала (T = общее количество часов). Я пробовал разные вещи, такие как 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))

1 Ответ

0 голосов
/ 23 апреля 2019

Возможно, вы ищете метод 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)
...