我是 pandas 和 python 的新手,我正在努力在我的代码中实现循环。我希望有人能帮助我。
我有以下数据框:
import pandas as pd
from pandas import Timestamp
pd.DataFrame({'DateTime': {0: Timestamp('2021-06-13 00:00:00'),
1: Timestamp('2021-06-13 02:00:00'),
2: Timestamp('2021-06-13 05:00:00'),
3: Timestamp('2021-06-13 07:00:00'),
4: Timestamp('2021-06-13 10:00:00')},
'actual_value': {0: 180.0949105082311,
1: 183.93185469787613,
2: 191.48399886639095,
3: 188.31358023933768,
4: 159.32768035801615},
'forecast_0': {0: nan,
1: 185.0,
2: 206.0,
3: 193.0,
4: 130.0},
'forecast_1': {0: 187.0,
1: 185.0,
2: 206.0,
3: 192.0,
4: 130.0},
'forecast_2': {0: 186.0,
1: nan,
2: 200.0,
3: 192.0,
4: nan},
'forecast_3': {0: 186.0,
1: 185.0,
2: 200.0,
3: 192.0,
4: 130.0},
'forecast_4': {0: 186.0,
1: 183.0,
2: 200.0,
3: 188.0,
4: 130.0}})
DateTime actual_value forecast_0 forecast_1 forecast_2 \
0 2021-06-13 00:00:00 180.094911 NaN 187.0 186.0
1 2021-06-13 02:00:00 183.931855 185.0 185.0 NaN
2 2021-06-13 05:00:00 191.483999 206.0 206.0 200.0
3 2021-06-13 07:00:00 188.313580 193.0 192.0 192.0
4 2021-06-13 10:00:00 159.327680 130.0 130.0 NaN
forecast_3 forecast_4
0 186.0 186.0
1 185.0 183.0
2 200.0 200.0
3 192.0 188.0
4 130.0 130.0
我想创建一个新的数据框或用简单的计算替换现有数据框中的数字。我想确定第二列中所有预测值相对于实际值的偏差。由于有超过 40 个这样的预测列,因此写下每一列的计算实在是太费时了。这就是为什么我想实现一个循环。我尝试了以下代码,但没有成功:
for i, col in enumerate(df.columns, -2):
df[col] = (df[col]-df['actual_value'])/df['actual_value']
我收到错误消息,“减法”不能使用类型为 dtype('<M8[ns]') 和 dtype('float64') 的操作数。有谁知道如何解决这个问题?我感谢每一条消息。