Сравнение значений в pandas кадре данных, которые проиндексированы по-разному - PullRequest
2 голосов
/ 02 апреля 2020

Мне нужна помощь при сравнении значений в pandas кадре данных, которые индексируются по-разному. Я прочитал Dataframe из CSV, содержащего заголовки «Время», «Предсказано», «Двигатель». «Время» представляет собой серию времени «ДД.ММ.ГГГГ чч: мм: сс» с шагом 10 минут, «Прогноз» и «Двигатель» принимают значения 0 или 1. Так это выглядит так:

+--------------------+---------+---------+
|Time                |Predicted|Engine   |
|01.01.2019  00:00:00|        0|        0|
|01.01.2019  00:10:00|        1|        0|
|01.01.2019  00:20:00|        1|        1|
|                 ...|      ...|      ...|

Я хочу сравнить прогнозируемое значение в [i] со значением двигателя в [i + 1].

+--------------------+---------+---------+------+
|Time                |Predicted|Engine   |Result|
|01.01.2019  00:00:00|        0|        0|False | <- although prob. not defined ?
|01.01.2019  00:10:00|        1|        0|True  |
|01.01.2019  00:20:00|        1|        1|True  |
|                 ...|      ...|      ...|   ...|

Это был мой исходный код (чтобы уточнить, к чему я стремился), который привел к

ValueError: Может сравнивать только идентичные объекты Series Series

Код:

res = []
for i in df['Predicted']:
    if df['Predicted'][i:i+1] == df['Engine'][i+1:i+2]:
        res.append(True)
    else:
        res.append(False)
df['Result'] = res

Теперь я понимаю, почему это не работает, но я не могу самостоятельно найти решение этой проблемы (пока), поскольку я довольно новичок в программировании.

1 Ответ

3 голосов
/ 02 апреля 2020

Вы можете использовать сдвиг, он в основном сдвигает вашу серию на некоторое количество, а затем сравнивает это с Engine:

df['Result'] = df['Predicted'].shift(1) == df['Engine']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...