我需要帮助比较不同索引的pandas数据框中的值。我已经从包含标题“时间”,“预测”,“引擎”的csv中读取了数据帧。 “时间”是一个以10分钟为步长的时间序列“ DD.MM.YYYY hh:mm:ss”,“预测的”和“引擎”的取值为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对象
代码:
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
我现在知道为什么它不起作用,但是我还没有找到解决这个问题的方法,因为我对编程还很陌生。
答案 0 :(得分:3)
您可以使用shift,基本上可以将您的系列进行一定程度的偏移,然后将其与引擎进行比较:
df['Result'] = df['Predicted'].shift(1) == df['Engine']