Предыдущий час Разница по строкам - PullRequest
0 голосов
/ 04 ноября 2019

Вот мой фрейм данных

df2 = pd.DataFrame( [
    [pd.Timestamp('2019-11-04 14:00:10.432783'), 'device1',  3000],
    [pd.Timestamp('2019-11-04 13:20:03.946156'), 'device1', 2000],
    [pd.Timestamp('2019-11-04 12:19:03.946156'), 'device1',  1000]
    ],
    columns=["timestamp", "id", "value"]
)

Я пытаюсь получить свой вывод, чтобы получить предыдущую почасовую разницу значений. Однако приведенный ниже код вычитает разницу со всеми точками данных в кадре данных. Как вычесть разницу построчно. [self.input_item] - мой ввод, df[self.output_item] - мой окончательный результат

today = dt.datetime.utcnow()
prev_hour = today - timedelta(hours=1)
prev_hour_top_window = prev_hour + timedelta(minutes=1)
prev_hour_bot_window = prev_hour - timedelta(minutes=1)
prev_hour_values = df.loc[(df['timestamp'] >= prev_hour_bot_window) &(df['timestamp'] <= prev_hour_top_window)][self.input_item]
prev_hour_values_mean = prev_hour_values.mean()
df[self.output_item] = df[self.input_item] - prev_hour_values_mean

1 Ответ

0 голосов
/ 05 ноября 2019

Если я вас правильно понял, вы бы хотели изменить только значение последней временной отметки, которая в этом случае находится в верхнем ряду. Для этого конкретного вопроса вы можете использовать:

df2.iloc[0,2] =  df2.iloc[0,2]-df2.iloc[1,2]

или

df2.loc[0,'value'] =  df2.loc[0,'value']-df2.loc[1,'value']

print(df2)

                   timestamp       id  value
0 2019-11-04 14:00:10.432783  device1   1000
1 2019-11-04 13:20:03.946156  device1   2000
2 2019-11-04 12:19:03.946156  device1   1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...