У меня есть следующий почасовой временной ряд, состоящий из 2 лет в кадре данных (df)
date energy
1/1/1997 0:00 37
1/1/1997 1:00 44
1/1/1997 2:00 55
.
.
.
12/31/1997 22:00 54
12/31/1997 23:00 55
1/1/1998 0:00 35
1/1/1998 1:00 36
1/1/1998 2:00 37
.
.
.
12/31/1998 23:00 44
Я хочу применить следующие ежемесячные потери к столбцу Energy:
Monthly Loss
1 3.6158136
2 5.3829265
3 4.4004292
4 4.1649284
5 5.9518338
6 4.5651714
7 6.1399174
8 5.9933625
9 6.4627925
10 6.2534558
11 3.3416914
12 4.5363111
Expected Output
date energy new_energy
1/1/1997 0:00 37 35.66 # 37 * (1-3.6158136/100)
1/1/1997 1:00 44 42.41 # 44 * (1-3.6158136/100)
1/1/1997 2:00 55 53.01 # 55 * (1-3.6158136/100)
.
.
.
12/31/1997 22:00 54 51.55 # 54 * (1-4.5363111/100)
12/31/1997 23:00 55 52.51 # 55 * (1-4.5363111/100)
1/1/1998 0:00 35 33.73 # 35 * (1-3.6158136/100)
1/1/1998 1:00 36 34.70 # 36 * (1-3.6158136/100)
1/1/1998 2:00 37 35.66 # 37 * (1-3.6158136/100)
.
.
.
12/31/1997 22:00 54 51.55 # 54 * (1-4.5363111/100)
12/31/1997 23:00 55 52.50 # 55 * (1-4.5363111/100)
Ниже мой код. Я пытаюсь найти самый простой способ применить ежемесячные убытки к часовым временным рядам
monthly_loss = [3.6158136, 5.3829265, 4.4004292, 4.1649284, 5.9518338, 4.5651714, 6.1399174, 5.9933625, 6.4627925, 6.2534558, 3.3416914, 4.5363111]
month = pd.to_datetime(df['date']).dt.month
df.insert(2, 'Month', month)
# converting the energy from hourly to monthly level
df['monthly_resampled_data'] = df.energy.resample('M').mean()
# apply monthly loss by months to the energy values
df['new_energy']=df['monthly_resampled_data']*(1-monthly_loss/100)
Ошибка получения
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex'