Вычисление значения поля dataframe из другого dataframe на основе сопоставления - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь использовать значения одного кадра данных для расчета значений нового кадра данных для той же даты и часа.Однако у меня возникают трудности с синтаксисом:

Я хочу просмотреть мой dfEnergy фрейм данных, и для каждой даты и часа в нем я хочу использовать значения "power" из df dataframe, чтобы вычислить«энергия» в фрейме данных dfEnergy.Я пытался использовать функции, но по какой-то причине я не могу заставить его работать.

def find_power(date, hour, df):
    mask = np.logical_and.reduce([
        df['date'] ==date,
        df['hour'] == hour
    ])
    df_tmp = df.loc[mask, :]
    energy = sum(0.25*df_tmp['power'])
    df_tmp.iloc[0:0]
    return energy
#
## create result
for i in range (1, len(dfEnergy)):
    date = dfEnergy['date'].values[i]
    hour = dfEnergy['hour'].values[i]
    dfEnergy['energy'].values[i]=find_power(date,hour,df)

Тем не менее, df_tmp увеличивается с каждой итерацией, и для значения dfEnergy['energy'] я получаю целые числа от 0 до 4, в то время какзначение должно быть реальным.Каждый час имеет 4 значения, из которых я хочу вычислить энергию, поэтому я подозреваю, что значения подсчитываются.

1 Ответ

0 голосов
/ 26 сентября 2019

Мне удалось сделать это с помощью форума.Вот решение:

def find_power(date, hour, df):
    mask = 0
    mask = np.logical_and.reduce([
        df['date'] ==date,
        df['hour'] == hour
    ])
    df_tmp = df.loc[mask, :]
    energy = sum(0.25*df_tmp['power'])
    df_tmp.iloc[0:0]
    return energy
#
## create result
for i in range (1, len(dfEnergy)):
    date = dfEnergy['date'].values[i]
    hour = dfEnergy['hour'].values[i]
    energy1 = find_power(date,hour,df)
    dfEnergy.iloc[i,dfEnergy.columns.get_loc('energy')] = energy1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...