Измените одну строку в pandas кадре данных на основе значения другой строки - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть pandas DataFrame с данными из морозильника мороженого. Несколько столбцов описывают различные температуры в системе, а также некоторые другие вещи. Один столбец под названием «Состояние размораживания» сообщает мне, когда морозильная камера размораживалась для удаления обильного льда с логическими значениями.

Эти «размораживания» - это то, что меня интересует, поэтому я добавил еще один столбец с именем «around_defrost» , Этот столбец в настоящее время имеет только значения NaN, но я хочу изменить их на «True» всякий раз, когда происходит размораживание в течение 30 минут после указанной строки c в кадре данных. Данные записываются каждую минуту, поэтому 30 минут означают 30 строк перед размораживанием, а 30 строк за ним должны быть установлены в «True»

Я пытался сделать это с помощью itterrows, ittertuple и играя с индексы, как видно на рисунке ниже, но пока успехи. Если у кого-то есть хорошее представление о том, как это можно сделать, я буду очень признателен!

введите описание изображения здесь

1 Ответ

0 голосов
/ 27 февраля 2020

Вам нужно использовать dataframe.rolling:

df = df.sort_values("Time") #sort by Time

df['around_defrost'] = df['Defrost status'].rolling(60, center=True, min_periods = 0).apply(
                          lambda x: True if True in x else False, raw=True)

РЕДАКТИРОВАТЬ: вам может понадобиться rolling(61, center=True), так как вы хотите рассмотреть рассматриваемый ряд И 30 до и после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...